![pgfplots 中的“填充”被放置在其他对象后面](https://linux22.com/image/311669/pgfplots%20%E4%B8%AD%E7%9A%84%E2%80%9C%E5%A1%AB%E5%85%85%E2%80%9D%E8%A2%AB%E6%94%BE%E7%BD%AE%E5%9C%A8%E5%85%B6%E4%BB%96%E5%AF%B9%E8%B1%A1%E5%90%8E%E9%9D%A2.png)
以下是一个(或多或少)最小的例子来说明我的问题:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12, clip bounding box=default tikz}
\begin{document}
\begin{tikzpicture}
\fill[fill=blue] (0,0) rectangle (5,5);
\fill[fill=red] (1,1) -- (3,1) -- (2,2) -- cycle; %%line A
\begin{axis}
\addplot[name path=A, domain=1:3] {2-abs(x-2)};
\draw[name path=B, thick, black] (axis cs:1,1) -- (axis cs:3,1);
\addplot[thick, fill=red] fill between[of=A and B] ;
\end{axis}
\end{tikzpicture}
\end{document}
对于 tikz 图片的“典型”元素,它们被绘制在现有元素的“上方”。例如,上面“A”行中绘制的三角形被放置在蓝色矩形的“上方”(即它隐藏了矩形的一部分)。
与此相反,使用 pgfplots 中的“填充之间”选项绘制的第二个三角形不是 放置在蓝色三角形“上方”,即使它是在之后绘制的。
为什么会这样? 有办法改变这种行为吗?
本质上,我想使用“填充之间”填充的区域进行剪辑。如果有更简单的方法可以做到这一点,我将不胜感激。
最后,我想指出的是,我实际应用中的“填充”区域是不是只是一个三角形,因此无法直接绘制它(即没有“填充”)。
谢谢你的帮助!
答案1
您可以使用on layer=main
作为选项fill between
。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12, clip bounding box=default tikz}
\begin{document}
\begin{tikzpicture}
\fill[fill=blue] (0,0) rectangle (5,5);
\fill[fill=red] (1,1) -- (3,1) -- (2,2) -- cycle; %%line A
\begin{axis}
\addplot[name path=A, domain=1:3,on layer=axis foreground] {2-abs(x-2)};
\draw[name path=B, thick, black] (1,1) -- (3,1);
\addplot[fill=red] fill between[of=A and B,on layer=main];
\end{axis}
\end{tikzpicture}
\end{document}