.png)
Quero sombrear uma região em meu gráfico enquanto uso axes equal=true
. No entanto, parte do que presumi que estaria sombreado, não está. Este é o meu 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}
e esta é a saída que recebo
Por alguma razão, o uso de equal axis=true
faz com que o eixo x se estenda além do xmin
valor, o que torna minha área sombreada muito pequena. No entanto, se eu comentar equal axis=true
as instruções, a área sombreada ficará exatamente como eu quero (mas preciso das equal axis=true
instruções para garantir que as perpendiculares que pretendo desenhar pareçam realmente perpendiculares).
Responder1
O manual pgfplots menciona (seção 4.10.1 Opções comuns de escala, ênfase minha):
/pgfplots/axis equal={true,false}
Cada vetor unitário é definido com o mesmo comprimento enquanto as dimensões do eixo permanecem constantes. Depois, as proporções de tamanho para cada unidade em x e y serão as mesmas.
Os limites do eixo serão ampliadospara compensar o efeito de escala.
Então, de fato, a xmin
configuração não é respeitada. Após os exemplos, o manual menciona:
A configuração
axis equal=true
é na verdade apenas um estilo que defineunit vector ratio=1 1 1, unit rescale keep size=true
.
Olhando pra cima unit rescale keep size
:
/pgfplots/unit rescale keep size=true|false|unless limits declared
Na configuração padrão, pgfplots mantém as dimensões originais do eixo, mesmo que a proporção do vetor unitário envolva escalas diferentes. Fá-lo ampliando os limites.
Definir isso para unless limits declared
impede a xmin
alteração. Não tenho 100% de certeza de que essa configuração (combinada com unit vector ratio=1 1 1
) realmente cria eixos iguais, mas 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}