
Mi objetivo es alinear superiormente el cuadro de leyenda con el gráfico para que quede exactamente al mismo nivel que el marco del eje superior.
El siguiente MWE funciona bien a primera vista, pero cuando se mira más de cerca, hay un pequeño desplazamiento vertical (ver imagen). Una vez visto, no puede dejar de verse.
\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}
Sé por otras respuestas que la leyenda es una matriz TikZ. Soy consciente de la posibilidad de posicionar la leyenda usando una coordenada (eje cs o de otro modo). Pero incluso cuando se utiliza un posicionamiento codificado como el siguiente, los bordes no se alinean exactamente.
\begin{axis}[
legend style={
at={(axis cs:2.6,2.1)}
},
ymax=2.1
]
Estoy usando una instalación de TeX Live 2019 si eso es relevante.
Respuesta1
Bienvenido a TeX.SE. Agregar outer sep = 0pt
estilo a su leyenda podría ser una solución adecuada.
Agregué código que coloca la leyenda al ras con el límite del lienzo y que sugiere que la parte superior del lienzo y la leyenda están alineadas cuando outer sep=0pt
se agrega al estilo.
\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}