PGFPLOTS транспонировала легенду с пустыми записями легенды

PGFPLOTS транспонировала легенду с пустыми записями легенды

У меня возникли проблемы с правильным размещением записей легенды в транспонированной матрице легенды размером 3x3 с пустыми (пропущенными) записями для следующих 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}

Вот что я получаю:

неудачный пример

Но я ожидаю следующее:

A   D   F
B   E
C

Я понял, что получу ожидаемый результат, раскомментировав последние две empty legendстроки:

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

При этом я получаю ожидаемый результат:

рабочий пример

Хотя я нашел решение своей первоначальной проблемы, мне интересно, является ли это ожидаемым поведением!? Я не смог найти ничего связанного вДокументация PGFPLOTS.

решение1

Если это соответствует вашим требованиям, пожалуйста, отметьте галочкой слева.

введите описание изображения здесь

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

Помните, что вам также необходимо указать якорь вашей легенды следующим образом:

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

Якорь определяет, какая точка поля легенды будет размещена в координатах, которые вы определяете с помощью at={(<>,<>)}.

Если вы используете только at={(<>,<>)}координаты, то вы вводите координаты осевого блока, где точка (0,0)— это левый нижний угол и (1,1)правый верхний угол.

Если вы используете вместо этого, at={(axis cs:<>,<>)}вы указываете реальные координаты оси, такие же, как и у вашего графика.

ПРИМЕРЫ

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

или

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

или

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

или

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

Позиция по умолчанию — north east.

Связанный контент