用透明填充坐标绘制的两幅图之间的区域

用透明填充坐标绘制的两幅图之间的区域

我尝试用一​​点点透明度填充两个图之间的区域。实际上我得到了fill between这个图:

在此处输入图片描述

我怎样才能填补两个图之间的差异。让实际的橙色部分变成白色,让实际的白色部分变成橙色?

我尝试了,split,every odd segment/.style={yellow}但这只会将第二个橙色部分更改为黄色。此外,通过研究 pgfplot 手册,我还是无法处理它。

这是我的代码。

\begin{tikzpicture}
    \begin{axis}[
    xlabel=X,
    ylabel=Y,
    %grid=major,
    axis lines=middle,
    xmin=0,
    xmax=10,
    ymin=0,
    ymax=8,
    smooth
    ]
    \addplot[name path=A,domain=0:5,color=red] {-(x-2.5)^(2)+6};
    \addplot[name path=B,domain=0:6,color=blue] {-(x-3.5)^(2)+6};
    \addplot [orange] fill between[
    of=A and B
    ];
    
    \end{axis}
    \end{tikzpicture}

答案1

您可以intersection segments按照手册中的说明使用pgfplots交叉路口段重组(手册修订版本 1.17,2020/02/29,第 5.7.6 节)。

在下面的代码中,sequence=R1 -- L2表示我们将第二条输入路径(R在此上下文中用 表示的路径)的第一个交叉段连接到第一条输入路径(L在此上下文中用 表示的路径)的第二个交叉段。然后,我们这样描述的路径的最后一点显然会自动连接到其第一个点,以形成可以填充的封闭路径,如手册第 448 页给出的示例所示。也可以使用以下方法显式关闭路径-- cycle(参见示例第 449 页):

\fill [orange,
       intersection segments={of=A and B, sequence=R1 -- L2}]
      -- cycle;

完整代码:

\documentclass[tikz, border=2mm]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.17}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    xlabel=X,
    ylabel=Y,
    axis lines=middle,
    xmin=0,
    xmax=10,
    ymin=0,
    ymax=8,
    smooth
    ]
    \addplot[name path=A,domain=0:5,color=red] {-(x-2.5)^(2)+6};
    \addplot[name path=B,domain=0:6,color=blue] {-(x-3.5)^(2)+6};
    \fill [orange, intersection segments={of=A and B, sequence=R1 -- L2}];
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果您希望填充部分透明,则可以使用例如:

\fill [orange, fill opacity=0.2,
       intersection segments={of=A and B, sequence=R1 -- L2}];

在此处输入图片描述

相关内容