Interação entre eixos igual = verdadeiro e xmin (e, eu acho, xmax)

Interação entre eixos igual = verdadeiro e xmin (e, eu acho, xmax)

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

insira a descrição da imagem aqui

Por alguma razão, o uso de equal axis=truefaz com que o eixo x se estenda além do xminvalor, o que torna minha área sombreada muito pequena. No entanto, se eu comentar equal axis=trueas instruções, a área sombreada ficará exatamente como eu quero (mas preciso das equal axis=trueinstruções para garantir que as perpendiculares que pretendo desenhar pareçam realmente perpendiculares).

insira a descrição da imagem aqui

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 xminconfiguração não é respeitada. Após os exemplos, o manual menciona:

A configuração axis equal=trueé na verdade apenas um estilo que define unit 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 declaredimpede a xminalteraçã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}

informação relacionada