PGFPLOTS leyenda transpuesta con entradas de leyenda vacías

PGFPLOTS leyenda transpuesta con entradas de leyenda vacías

Tengo problemas para colocar correctamente las entradas de la leyenda en una matriz de leyenda transpuesta con forma de 3x3 con entradas vacías (omitidas) para el siguiente 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}

Lo que obtengo es:

ejemplo fallido

Pero lo que espero es:

A   D   F
B   E
C

Descubrí que obtengo el resultado esperado al descomentar las dos últimas empty legendlíneas:

\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}

Con esto obtengo el resultado esperado:

ejemplo de trabajo

Aunque encontré la solución para mi problema inicial, me pregunto si este es el comportamiento esperado. No pude encontrar nada relacionado en elDocumentación PGFPLOTS.

Respuesta1

Si esto cumple con sus requisitos, marque la marca de verificación a la izquierda

ingrese la descripción de la imagen aquí

\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}

Tenga en cuenta que también debe especificar un ancla de su leyenda de esta manera:

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

el ancla define qué punto del cuadro de leyenda se colocará en las coordenadas que usted defina con at={(<>,<>)}.

Si usa solo at={(<>,<>)}las coordenadas que inserta son las del cuadro del eje donde el punto (0,0)es el ángulo inferior izquierdo y (1,1)el ángulo superior derecho.

Si usas en su lugar at={(axis cs:<>,<>)}especificas las coordenadas reales del eje, las mismas de tu trazado.

EJEMPLOS

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

o

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

o

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

o

\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,
]%

La posición predeterminada es north east.

información relacionada