TikZ's \ foreach tuple w PGF
Oct 21 2020
Chciałbym wykreślić listę danych i dodać zgodnie z wpisami legendy. Próbowałem użyć \foreachdla krotek, które są zaimplementowane w pgfforpakiecie i ładowane za pomocą TikZ. Niestety, druga zmienna opisująca etykietę \clabelwydaje się być niezdefiniowana dla LaTeX. Ta konstrukcja wydaje się działać, jeśli jest używana na zewnątrz \begin{axis} ... \end{axis}. Czy brakuje mi czegoś istotnego dotyczącego TikZ / PGF?
Minimalny przykład
\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}
Odpowiedzi
1 StevenB.Segletes Oct 21 2020 at 18:47
Musisz rozwinąć \clabeljako argument za \addlegendentry, ponieważ sama legenda jest tworzona po zakończeniu wykresów. W tym momencie \clabelutracono lokalną wartość .
\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}