Использование \ref в ylabel pgfplot

Использование \ref в ylabel pgfplot

Когда я использую \labelи \refдля различения двух осей Y, отметки, нарисованные с помощью, \refбольше не находятся на линиях после поворота вместе с остальной частью этикетки (см. пример ниже). Есть идеи?

\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}

ссылка не работает как ожидалось

решение1

Действительно, в pgfplots есть ошибка: \refкоманда проверяет, "вызывается ли она из картинки tikz". Но эта проверка глючная, потому что она, нуявляетсявызван из tikzpicture, но tikzpicture был прерван для отображения узла.

В результате ошибки метки имеют неожиданное смещение.

Пока ошибка не будет исправлена, вы можете воспользоваться следующим обходным решением:

\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}

Во всех ваших метках он добавляет \fixcheckмакрос, который просто заставит проверку вернуть "false". В этом случае \refдобавит временную tikzpicture.

Связанный контент