
\label
Wenn ich und verwende \ref
, um zwei Y-Achsen zu unterscheiden, \ref
liegen die von gezeichneten Markierungen nicht mehr auf den Linien, nachdem ich sie zusammen mit dem Rest des Etiketts gedreht habe (siehe Beispiel unten). Irgendwelche Ideen?
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis y line*=left, scale only axis,
ylabel={estimation 2 \ref{pgf:allsamples}}]
\addplot[blue,mark=+] table {data2.csv};
\label{pgf:allsamples}
\end{axis}
\begin{axis}[axis y line*=right, scale only axis,
ylabel={estimation 1 \ref{pgf:swingvotes}}, ylabel near ticks]
\addplot[red,mark=x] table {data1.csv};
\label{pgf:swingvotes}
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Es gibt tatsächlich einen Fehler in pgfplots: Der \ref
Befehl prüft, ob „er aus einem Tikz-Bild heraus aufgerufen wird“. Aber diese Prüfung ist fehlerhaft, weil sie, nun ja,Istwurde aus einem Tikzpicture heraus aufgerufen, aber das Tikzpicture wurde unterbrochen, um einen Knoten anzuzeigen.
Als Folge des Fehlers weisen die Beschriftungen eine unerwartete Verschiebung auf.
Bis der Fehler behoben ist, können Sie den folgenden Workaround nutzen:
\documentclass{article}
\usepackage{pgfplots}
\def\fixcheck{%
\def\tikzifinpicture##1##2{##2}%
}%
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis y line*=left, scale only axis,
ylabel={\fixcheck estimation 2 \ref{pgf:allsamples}}]
\addplot[blue,mark=+] {x+5};
\label{pgf:allsamples}
\end{axis}
\begin{axis}[axis y line*=right, scale only axis,
ylabel={\fixcheck estimation 1 \ref{pgf:swingvotes}}, ylabel near ticks]
\addplot[red,mark=x] {x};
\label{pgf:swingvotes}
\end{axis}
\end{tikzpicture}
\end{document}
In allen Ihren Beschriftungen wird das \fixcheck
Makro hinzugefügt, das einfach dazu führt, dass die Prüfung „false“ zurückgibt. In diesem Fall \ref
wird ein temporäres Tikzbild hinzugefügt.