
Cuando uso \label
y \ref
para distinguir dos ejes y, las marcas dibujadas por \ref
ya no están en las líneas después de rotarlas junto con el resto de la etiqueta (ver ejemplo a continuación). ¿Algunas ideas?
\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}
Respuesta1
De hecho, hay un error en pgfplots: el \ref
comando comprueba si "se invoca desde una imagen tikz". Pero esta verificación tiene errores porque, bueno,esinvocado desde dentro de un tikzpicture, pero el tikzpicture se ha interrumpido para mostrar un nodo.
Como resultado del error, las etiquetas tienen un desplazamiento inesperado.
Hasta que se solucione el error, puede utilizar la siguiente solución alternativa:
\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}
En todas sus etiquetas, agrega la \fixcheck
macro que simplemente hará que la verificación devuelva "falso". En ese caso, \ref
agregará una imagen tikz temporal.