Ich habe Probleme, die Legendeneinträge in einer 3x3-förmigen, transponierten Legendenmatrix mit leeren (übersprungenen) Einträgen für das folgende MWE richtig zu platzieren:
\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}
Was ich bekomme ist:
Aber was ich erwarte ist:
A D F
B E
C
Ich habe herausgefunden, dass ich das erwartete Ergebnis erhalte, wenn ich die letzten beiden empty legend
-Zeilen auskommentiere:
\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}
Damit erhalte ich das erwartete Ergebnis:
Obwohl ich die Lösung für mein anfängliches Problem gefunden habe, frage ich mich, ob dies das erwartete Verhalten ist!? Ich konnte nichts Ähnliches in derPGFPLOTS-Dokumentation.
Antwort1
Wenn dies Ihren Anforderungen entspricht, aktivieren Sie bitte das Häkchen auf der linken Seite
\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}
Denken Sie daran, dass Sie auch einen Anker Ihrer Legende auf diese Weise angeben müssen:
legend style={at={(0.03,0.5)},anchor=west}
Der Anker bestimmt, welcher Punkt der Legendenbox an den mit definierten Koordinaten platziert wird at={(<>,<>)}
.
Wenn Sie nur at={(<>,<>)}
die Koordinaten verwenden, die Sie einfügen, handelt es sich um die des Achsenfelds, wobei (0,0)
sich die Punkte im linken unteren Winkel und (1,1)
im rechten oberen Winkel befinden.
Wenn Sie stattdessen verwenden, at={(axis cs:<>,<>)}
geben Sie die tatsächlichen Koordinaten der Achse an, dieselben wie die Ihres Diagramms.
Beispiele
legend style={at={(axis cs:0.5,1)},anchor=south west}
oder
\begin{axis}[legend pos=north west]
oder
\begin{axis}[legend style={at={(0.5,-0.1)},anchor=north}]
oder
\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,
]%
Die Standardposition ist north east
.