行为之间奇怪的填充

行为之间奇怪的填充

我刚刚开始使用库之间的填充,它非常有用,但我承认它有时对我来说是一个黑匣子。

例如,如果我想填充 y=x^2 和 y=2-x^2 所包围的空间(因此将填充剪切到 -1 和 1 之间)那么我最初尝试过这个。

BadFillBetween

然后我做了一点小改动(稍微降低了 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}

我猜想轴的问题并不是我们所期望的,但我确信可以以某种方式解决覆盖问题。

在此处输入图片描述

相关内容