我尝试用一点点透明度填充两个图之间的区域。实际上我得到了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}];