Verwenden von \ref in einem Ylabel eines Pgfplots

Verwenden von \ref in einem Ylabel eines Pgfplots

\labelWenn ich und verwende \ref, um zwei Y-Achsen zu unterscheiden, \refliegen 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}

ref funktioniert nicht wie erwartet

Antwort1

Es gibt tatsächlich einen Fehler in pgfplots: Der \refBefehl 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 \fixcheckMakro hinzugefügt, das einfach dazu führt, dass die Prüfung „false“ zurückgibt. In diesem Fall \refwird ein temporäres Tikzbild hinzugefügt.

verwandte Informationen