以下是一个(或多或少)最小的例子来说明我的问题:
\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}