我刚刚开始使用库之间的填充,它非常有用,但我承认它有时对我来说是一个黑匣子。
例如,如果我想填充 y=x^2 和 y=2-x^2 所包围的空间(因此将填充剪切到 -1 和 1 之间)那么我最初尝试过这个。
然后我做了一点小改动(稍微降低了 ymin),就得到了我想要的结果。有人能解释一下发生了什么吗?
下面是我用于第一张图片的代码。要获取第二张图片,请设置 ymin=-.1 而不是 ymin=0。我还注意到,如果您去掉填充之间的软剪辑,那么您将得到以下图片,这对我来说很有意义。所以一定是软剪辑出了问题。
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.3}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,xmax=2,
ymin=0,ymax=4,
height = 6cm,
minor tick num=1,
axis lines=center,
axis line style=<->]
\addplot[name path=F,blue,domain={-2:2}] {-x^2+2};
\addplot[name path=G,green,domain={-2:2}] {x^2};
\addplot[color=brown!50]fill between[of=F and G, soft clip={domain=-1:1}];
\end{axis}
\end{tikzpicture}
\end{document}
答案1
可以使用 来标识要填充的区域soft clip={(-1,-1) rectangle (1,4)}
。这将用一个由左手坐标(-1-1)
和右手坐标划定的矩形来标识剪辑区域(1,4)
。为了避免将填充放置在轴的顶部,axis on top
必须将 添加到轴选项中。tikz
图案库用于用 填充区域pattern=north east lines
。
结果如下:
这是 MWE:
\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,xmax=2,
ymin=0,ymax=4,
height = 6cm,
minor tick num=1,
axis lines=center,
axis line style=<->,
axis on top
]
\addplot[name path=G,green,domain={-2:2}] {x^2};
\addplot[name path=F,blue,domain={-2:2}] {-x^2+2};
\addplot[pattern=north east lines] fill between [
of=F and G,
soft clip={(-1,-1) rectangle (1,4)}
];
\end{axis}
\end{tikzpicture}
\end{document}
答案2
pgf手册描述了一种解决方案如下:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.3}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,xmax=2,
ymin=0,ymax=4,
height = 6cm,
minor tick num=1,
axis lines=center,
axis line style=<->
]
\addplot[name path=G,green,domain={-2:2}] {x^2};
\addplot[name path=F,blue,domain={-2:2}] {-x^2+2};
% \addplot[color=blue!50]fill between[of=G and F, split, clip={domain=-1:1}];
\tikzfillbetween [of=F and G,split,every even segment/.style={white!1}] {red!50};
\end{axis}
\end{tikzpicture}
\end{document}
我猜想轴的问题并不是我们所期望的,但我确信可以以某种方式解决覆盖问题。