Seltsames Verhalten beim Füllen zwischen

Seltsames Verhalten beim Füllen zwischen

Ich habe gerade angefangen, die Bibliothek „Fill Between“ zu verwenden, und sie ist sehr nützlich, aber ich gebe zu, dass sie für mich manchmal eine Blackbox ist.

Wenn ich beispielsweise den von y=x^2 und y=2-x^2 umschlossenen Raum füllen möchte (also die Füllung so zuschneiden, dass sie zwischen -1 und 1 liegt), habe ich ursprünglich Folgendes versucht.

Schlechte Füllung zwischen

Dann habe ich nur eine kleine Änderung vorgenommen (das Ymin ganz leicht verringert) und ich habe bekommen, was ich wollte. Kann jemand erklären, was passiert?

GutFüllenZwischen

Der Code, den ich für das erste Bild verwendet habe, ist unten. Um das zweite Bild zu erhalten, setzen Sie ymin=-.1 statt ymin=0. Mir ist auch aufgefallen, dass, wenn Sie den Softclip in der Füllung dazwischen entfernen, Sie das folgende Bild erhalten, das für mich Sinn ergibt. Es muss also etwas mit dem Softclip zu tun haben, das durcheinander geraten ist.

OkayFüllenZwischen

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

Antwort1

Der auszufüllende Bereich kann mithilfe von identifiziert werden soft clip={(-1,-1) rectangle (1,4)}. Dies identifiziert den Clip-Bereich mit einem Rechteck, das durch eine linke (-1-1)und eine rechte Koordinate abgegrenzt ist (1,4). Um zu vermeiden, dass die Füllung über den Achsen platziert wird, axis on topmuss den Achsenoptionen hinzugefügt werden. Die tikzMusterbibliothek wird verwendet, um den Bereich mit zu füllen pattern=north east lines.

Dies ist das Ergebnis:

Bildbeschreibung hier eingeben

Dies ist das 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}

Antwort2

Das pgf-Handbuch beschreibt eine Lösung wie folgt:

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

Ich vermute, dass das Problem mit der Achse unerwünscht ist, bin mir aber sicher, dass sich das Override irgendwie lösen lässt.

Bildbeschreibung hier eingeben

verwandte Informationen