
Моя цель — выровнять поле легенды по верхнему краю графика так, чтобы оно точно совпадало с рамкой верхней оси.
Следующий MWE работает нормально на первый взгляд, но если присмотреться, то можно заметить небольшое вертикальное смещение (см. изображение). Увидев его однажды, его уже не развидеть.
\documentclass[tikz,margin=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend style={
legend pos=outer north east
}
]
\addplot[color=gray!50,mark=x] coordinates {
(1,1)
};
\addlegendentry{Stuff}
\addplot[color=gray,mark=x] coordinates {
(2,2)
};
\addlegendentry{Other stuff}
\end{axis}
\end{tikzpicture}
\end{document}
Я знаю из других ответов, что легенда — это матрица TikZ. Я знаю о возможности позиционировать легенду с помощью координат (ось cs или иная). Но даже при использовании жестко закодированного позиционирования, как в следующем примере, границы не выстраиваются точно.
\begin{axis}[
legend style={
at={(axis cs:2.6,2.1)}
},
ymax=2.1
]
Я использую установку TeX Live 2019, если это актуально.
решение1
Добро пожаловать в TeX.SE. Добавление outer sep = 0pt
стиля к вашей легенде может быть подходящим решением.
Я добавил код, который размещает легенду вровень с границей холста и который предполагает, что верх холста и легенда выровнены при outer sep=0pt
добавлении к стилю.
\documentclass[tikz,margin=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend style={
outer sep=0pt,
legend pos=outer north east
}
% legend style={
% anchor=north west,
% outer sep=0pt,
% at= {(current axis.north east)},
%}
]
\addplot[color=gray!50,mark=x] coordinates {
(1,1)
};
\addlegendentry{Stuff}
\addplot[color=gray,mark=x] coordinates {
(2,2)
};
\addlegendentry{Other stuff}
\end{axis}
\end{tikzpicture}
\end{document}