这篇文章是对以下文章评论中讨论的延续邮政
以下代码运行良好,但如果我更改为,compat = 1.10
阴影就会消失。我很好奇为什么?注释也会%\pgfplotsset{compat=1.11}
删除阴影。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-1, xmax=3,
ymin=-1, ymax=3,
axis lines=middle,
]
\addplot [gray, name path = A] coordinates {(0, 1) (1, 1)};
\path[name path=xaxis] (\pgfkeysvalueof{/pgfplots/xmin}, 0) -- (\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[gray, pattern=north west lines] fill between[of=A and xaxis, soft clip={domain=1/2:1}];
\end{axis}
\end{tikzpicture}
\end{document}
答案1
正如我在最后一条评论中提到的,与compat=1.11
一起使用的坐标\draw
(以及其他“常规”TikZ 绘图命令,包括\path
)将被视为轴坐标。而与1.10
则不是。
因此,如果您有设置或者根本没有设置,\path[name path=xaxis] (\pgfkeysvalueof{/pgfplots/xmin}, 0) -- (\pgfkeysvalueof{/pgfplots/xmax},0);
路径实际上就不会沿着 x 轴运行。compat=1.10
compat
如果你改为
\path[name path=xaxis] (axis cs:\pgfkeysvalueof{/pgfplots/xmin}, 0) -- (axis cs:\pgfkeysvalueof{/pgfplots/xmax},0);
切换到轴坐标系是明确的,无论如何compat
设置它都会按预期工作。
下面是一个完整的示例,展示了两者的区别。带有 的线为蓝线axis cs
,不带有 的线为红线。您可以在此屏幕截图的左下角看到红线。
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-1, xmax=3,
ymin=-1, ymax=3,
axis lines=middle,
clip=false % added just for this example
]
\addplot [gray, name path = A] coordinates {(0, 1) (1, 1)};
% here we use axis cs:, so it works
\draw[blue, ultra thick, name path=xaxis] (axis cs:\pgfkeysvalueof{/pgfplots/xmin}, 0) -- (axis cs:\pgfkeysvalueof{/pgfplots/xmax},0);
% here we don't, so it doesn't work (in the way you expected)
\draw[red, ultra thick] (\pgfkeysvalueof{/pgfplots/xmin}, 0) -- (\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[gray, pattern=north west lines] fill between[of=A and xaxis, soft clip={domain=1/2:1}];
\end{axis}
\end{tikzpicture}
\end{document}