我想用图案填充两条曲线之间的区域,比如水平线。因为我想在这些曲线下方添加一些其他虚线,所以我使用了\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
?
或许这个问题太过局部了。