
Acabo de empezar a utilizar el relleno entre bibliotecas y es muy útil, pero admito que a veces es un cuadro negro para mí.
Por ejemplo, si quiero llenar el espacio encerrado por y=x^2 e y=2-x^2 (por lo tanto, recorte el relleno para que esté entre -1 y 1), originalmente intenté esto.
Luego agregué un pequeño cambio (disminuí un poco el ymin) y obtuve lo que quería. ¿Alguien puede explicar qué está pasando?
El código que utilicé para la primera imagen se encuentra a continuación. Para obtener la segunda imagen, configure ymin=-.1 en lugar de ymin=0. También noté que si te deshaces del clip suave en el relleno intermedio, obtendrás la siguiente imagen, que para mí tiene sentido. Entonces debe ser algo con el clip blando que se está estropeando.
\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}
Respuesta1
El área a llenar se puede identificar usando soft clip={(-1,-1) rectangle (1,4)}
. Esto identifica el área de recorte con un rectángulo delineado por una coordenada izquierda (-1-1)
y una coordenada derecha (1,4)
. Para evitar que el relleno se coloque encima de los ejes, axis on top
se debe agregar a las opciones de los ejes. La tikz
biblioteca de patrones se utiliza para llenar el área con pattern=north east lines
.
Este es el resultado:
Este es el 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}
Respuesta2
El manual de pgf describe una solución de la siguiente manera:
\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}
Supongo que el problema con el eje no es deseado, pero estoy seguro de que la anulación se puede resolver de alguna manera.