Preenchimento estranho entre comportamento

Preenchimento estranho entre comportamento

Acabei de começar a usar o preenchimento entre bibliotecas e é muito útil, mas admito que às vezes é uma caixa preta para mim.

Por exemplo, se eu quiser preencher o espaço delimitado por y=x^2 e y=2-x^2 (portanto, recorte o preenchimento para ficar entre -1 e 1), então tentei originalmente isso.

BadFillBetween

Então adicionei apenas uma pequena alteração (diminuí um pouco o ymin) e consegui o que queria. Alguém pode explicar o que está acontecendo?

GoodFillBetween

O código que usei para a primeira foto está abaixo. Para obter a segunda imagem, defina ymin=-.1 em vez de ymin=0. Também notei que se você se livrar do clipe suave no preenchimento, obterá a imagem a seguir, que faz sentido para mim. Então deve ser algo com o clipe macio que está bagunçado.

OkPreencherEntre

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

Responder1

A área a ser preenchida pode ser identificada usando soft clip={(-1,-1) rectangle (1,4)}. Isto identifica a área de corte com um retângulo delineado por uma coordenada esquerda (-1-1)e uma coordenada direita (1,4). Para evitar que o preenchimento seja colocado em cima dos eixos, axis on topdeve-se adicionar opções de eixos. A tikzbiblioteca de padrões é usada para preencher a área com arquivos pattern=north east lines.

Este é o resultado:

insira a descrição da imagem aqui

Este é o 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}

Responder2

O manual pgf descreve uma solução da seguinte forma:

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

Acho que o problema com o eixo não é desejado, mas tenho certeza de que a substituição pode ser resolvida de alguma forma.

insira a descrição da imagem aqui

informação relacionada