Tupla \ foreach de TikZ en PGF

Oct 21 2020

Me gustaría trazar una lista de datos y agregar las entradas de leyenda correspondientes. Intenté usar \foreachpara tuplas que se implementa en el pgfforpaquete y se carga con TikZ. Desafortunadamente, la segunda variable que describe la etiqueta \clabelparece no estar definida para LaTeX. Esta construcción parece funcionar si se usa al aire libre \begin{axis} ... \end{axis}. ¿Extraño algo esencial con respecto a TikZ / PGF?

Ejemplo mínimo

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}

\pgfplotsset{
    compat=1.16,
}

\begin{document}
\begin{tikzpicture}

    \begin{axis}[]
      \foreach \c/\clabel in {1/a, 2/b}
      {
        \addplot  {\c^2};
        \addlegendentry{ \clabel }
      };
    \end{axis}


\end{tikzpicture}
\end{document}

Respuestas

1 StevenB.Segletes Oct 21 2020 at 18:47

Debe expandirse \clabelcomo argumento para \addlegendentry, ya que la leyenda en sí se crea después de que se completan los gráficos. En ese momento, el valor local de \clabelse ha perdido.

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}

\pgfplotsset{
    compat=1.16,
}

\begin{document}
\begin{tikzpicture}

    \begin{axis}[]
      \foreach \c/\clabel in {1/a, 2/b}
      {
        \addplot  {\c^2};
        \expandafter\addlegendentry\expandafter{\clabel};
      }
    \end{axis}


\end{tikzpicture}
\end{document}