\addplot 中的图案从以前的 \draw 继承了虚线选项

\addplot 中的图案从以前的 \draw 继承了虚线选项

我想用图案填充两条曲线之间的区域,比如水平线。因为我想在这些曲线下方添加一些其他虚线,所以我使用了\draw[dashed]然后\addplot[pattern=horizontal lines](两次)。

我注意到该区域填充了两种不同的图案选项,虚线和实线,原因是之前的\draw。事实上,如果我删除该\draw线或将其放在代码的后面,该区域就会被正确填充。

为了解决这个问题,我可以在使用之前放置一条“隐形”的线\addplot,但我想知道是否有“更优雅”的解决方案,以及为什么\addplot继承选项,原因是什么。

以下是代码示例

\documentclass{article}

\usepackage{pgf,pgfsys,pgffor}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usetikzlibrary{intersections,arrows,positioning,patterns}

\begin{document}

\begin{tikzpicture}
\pgfplotstablesort\coordinates{
0 0
1 0
1 1
}
\pgfplotstablesort\coordinatesTwo{
0 0
0 1
1 1
}
    \begin{axis}[ xmin=0, xmax=1, ymin=0, ymax=1]
        \draw[gray,loosely dashed,line width=.8pt] (axis description cs:0,0) -- (axis description cs:1,1);
        %NOTICE THE DIFFERENCE WITH AND WITHOUT THE FOLLOWING LINE UNCOMMENTED
        %\draw[line width=1pt, solid] (axis description cs:0,0) -- (axis description cs:0,0.01); 
        \addplot[line width=1pt,no markers,solid,  pattern=horizontal lines, draw=blue] table \coordinates;
        \addplot[line width=1pt,no markers,solid,  pattern=horizontal lines, draw=blue] table \coordinatesTwo;
    \end{axis}
\end{tikzpicture}

\end{document}

编辑:问题可以简化如下,效果相同:

\documentclass{article}

\usepackage{pgf,pgfsys,pgffor}
\usepackage{tikz}
\usetikzlibrary{intersections,arrows,positioning,patterns}

\begin{document}

\begin{tikzpicture}[x=8cm,y=8cm]
    \draw[gray,loosely dashed,line width=.8pt] (0,0) -- (1,1);
    %NOTICE THE DIFFERENCE WITH AND WITHOUT THE FOLLOWING LINE UNCOMMENTED
    %\draw[line width=1pt, solid] (0,0) -- (0,0.01); 
    \draw[line width=1pt,no markers,solid,  pattern=horizontal lines, draw=blue] plot coordinates {(0,0) (1,0) (1,1)};
    \draw[line width=1pt,no markers,solid,  pattern=horizontal lines, draw=blue] plot coordinates {(0,0) (0,1) (1,1)};
\end{tikzpicture}

\end{document}

答案1

我找到

(a)Acrobat Reader 没有这个问题

(b)convert来自 imagemagick 套件不会产生问题

(c)ghostscriptgv P.pdf不会产生此问题

(d)xpdf有问题

(e)evince有问题

我得出结论,这是一个查看器问题;也许是一个错误libpoppler

或许这个问题太过局部了。

相关内容