.png)
Quiero sombrear una región en mi parcela mientras uso axes equal=true
. Sin embargo, parte de lo que supuse estaría sombreado, no lo está. Este es mi MWE
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
axis equal=true,
axis lines=middle,
axis on top,
ticks=none,
xmin=-3,xmax=3,
ymin=-3,ymax=3,
]
\addplot[draw=none,fill=gray!20!white] (-3,-3) -- (-1.125,-3) -- (0.375,3) -- (-3,3) -- cycle;
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
y este es el resultado que obtengo
Por alguna razón, el uso de equal axis=true
hace que el eje x se extienda más allá del xmin
valor, lo que hace que mi área sombreada sea demasiado pequeña. Sin embargo, si comento equal axis=true
las instrucciones, el área sombreada se ve exactamente como la quiero (pero necesito las equal axis=true
instrucciones para asegurarme de que las perpendiculares que pretendo dibujar se vean realmente perpendiculares).
Respuesta1
El manual de pgfplots menciona (sección 4.10.1 Opciones de escala comunes, el énfasis es mío):
/pgfplots/axis equal={true,false}
Cada vector unitario se establece en la misma longitud mientras las dimensiones del eje permanecen constantes. Posteriormente, las proporciones de tamaño para cada unidad en xey serán las mismas.
Los límites del eje se ampliaránpara compensar el efecto de escala.
De hecho, xmin
no se respeta el entorno. Después de los ejemplos, el manual menciona:
La configuración
axis equal=true
es en realidad sólo un estilo que estableceunit vector ratio=1 1 1, unit rescale keep size=true
.
Buscando unit rescale keep size
:
/pgfplots/unit rescale keep size=true|false|unless limits declared
En la configuración predeterminada, pgfplots mantiene las dimensiones del eje original aunque la relación de vectores unitarios implique diferentes escalas. Lo hace ampliando los límites.
Establecer esto en unless limits declared
evita el xmin
cambio. No estoy 100% seguro de que esta configuración (combinada con unit vector ratio=1 1 1
) realmente cree ejes iguales, pero parece funcionar. Código:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
%axis equal=true,
unit vector ratio=1 1 1,
unit rescale keep size=unless limits declared,
axis lines=middle,
axis on top,
ticks=none,
xmin=-3,xmax=3,
ymin=-3,ymax=3,
]
\addplot[draw=none,fill=gray!20!white] (-3,-3) -- (-1.125,-3) -- (0.375,3) -- (-3,3) -- cycle;
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}