
Quando utilizo \label
e \ref
para distinguir dois eixos y, as marcas desenhadas por \ref
não ficam mais nas linhas após girá-lo junto com o restante do rótulo (veja o exemplo abaixo). Alguma ideia?
\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}
Responder1
Existe, de fato, um bug no pgfplots: o \ref
comando verifica se "ele é invocado de dentro de uma imagem tikz". Mas esta verificação tem erros porque, beméinvocado de dentro de um tikzpicture, mas o tikzpicture foi interrompido para exibir um nó.
Como resultado do bug, os rótulos apresentam um deslocamento inesperado.
Até que o bug seja corrigido, você pode usar a seguinte solução 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}
Em todos os seus rótulos, ele adiciona a \fixcheck
macro que simplesmente fará com que a verificação retorne "falso". Nesse caso, \ref
adicionará uma imagem tikz temporária.