У меня возникли проблемы с правильным размещением записей легенды в транспонированной матрице легенды размером 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
.