Legenda transposta PGFPLOTS com entradas de legenda vazias

Legenda transposta PGFPLOTS com entradas de legenda vazias

Estou tendo problemas para colocar corretamente as entradas da legenda em uma matriz de legenda transposta em formato 3x3 com entradas vazias (ignoradas) para o seguinte MWE:

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[%
      legend columns = 3,
      transpose legend,
    ]

    \addplot {-x+1};\addlegendentry{A}
    \addplot {-x+2};\addlegendentry{B}
    \addplot {-x+3};\addlegendentry{C}
    \addplot {-x+4};\addlegendentry{D}
    \addplot {-x+5};\addlegendentry{E}
    \addlegendimage{empty legend}\addlegendentry{skip me}
    \addplot {-x+7};\addlegendentry{F}
    %\addlegendimage{empty legend}\addlegendentry{skip me}
    %\addlegendimage{empty legend}\addlegendentry{skip me}

    \end{axis}
  \end{tikzpicture}
\end{document}

O que eu recebo é:

exemplo de falha

Mas o que espero é:

A   D   F
B   E
C

Descobri que obtenho o resultado esperado descomentando as duas últimas empty legendlinhas:

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[%
      legend columns = 3,
      transpose legend,
    ]

    \addplot {-x+1};\addlegendentry{A}
    \addplot {-x+2};\addlegendentry{B}
    \addplot {-x+3};\addlegendentry{C}
    \addplot {-x+4};\addlegendentry{D}
    \addplot {-x+5};\addlegendentry{E}
    \addlegendimage{empty legend}\addlegendentry{skip me}
    \addplot {-x+7};\addlegendentry{F}
    \addlegendimage{empty legend}\addlegendentry{skip me} % <-- Uncommented
    \addlegendimage{empty legend}\addlegendentry{skip me} % <-- Uncommented

    \end{axis}
  \end{tikzpicture}
\end{document}

Com isso, obtenho o resultado esperado:

exemplo de trabalho

Embora eu tenha encontrado a solução para o meu problema inicial, gostaria de saber se esse é o comportamento esperado! Não encontrei nada relacionado noDocumentação PGFPLOTS.

Responder1

Se isso atender às suas necessidades, marque a marca de seleção à esquerda

insira a descrição da imagem aqui

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[%
      legend columns = 3,
      transpose legend,
    ]

    \addplot {-x+1};\addlegendentry{A}
    \addplot {-x+2};\addlegendentry{B}
    \addplot {-x+3};\addlegendentry{C}
    \addplot {-x+4};\addlegendentry{D}
    \addplot {-x+5};\addlegendentry{E}
    \addlegendimage{empty legend}\addlegendentry{}
    \addplot {-x+7};\addlegendentry{F}
    \addlegendimage{empty legend}\addlegendentry{} % <-- Uncommented
    \addlegendimage{empty legend}\addlegendentry{} % <-- Uncommented

    \end{axis}
  \end{tikzpicture}
\end{document}

Lembre-se de que você também deve especificar uma âncora para sua legenda desta forma:

legend style={at={(0.03,0.5)},anchor=west}

a âncora define qual ponto da caixa de legenda será colocado nas coordenadas que você definir com at={(<>,<>)}.

Se você usar apenas at={(<>,<>)}as coordenadas inseridas serão as da caixa do eixo onde o ponto (0,0)é o ângulo inferior esquerdo e (1,1)o ângulo superior direito.

Se você usar em vez disso, at={(axis cs:<>,<>)}especifique as coordenadas reais do eixo, as mesmas do seu gráfico.

EXEMPLOS

legend style={at={(axis cs:0.5,1)},anchor=south west}

ou

\begin{axis}[legend pos=north west]

ou

\begin{axis}[legend style={at={(0.5,-0.1)},anchor=north}]

ou

\begin{axis}
[%
    axis lines = middle,
    xlabel = $x$,
    ylabel = {$f(x)$},
    enlarge y limits=upper,
    yticklabel style = {font=\tiny},
    xticklabel style = {font=\tiny},
    legend style={xshift=1.5cm},
    thick,
]%

A posição padrão é north east.

informação relacionada