pgfplots 中的“填充”被放置在其他对象后面

pgfplots 中的“填充”被放置在其他对象后面

以下是一个(或多或少)最小的例子来说明我的问题:

\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}

在此处输入图片描述

相关内容