TikZ's \ foreach tuple di PGF

Oct 21 2020

Saya ingin memplot daftar data dan menambahkan entri legenda yang sesuai. Saya mencoba menggunakan \foreachuntuk tupel yang diimplementasikan dalam pgfforpaket dan dimuat dengan TikZ. Sayangnya, variabel kedua yang mendeskripsikan label \clabeltampaknya tidak ditentukan untuk LaTeX. Konstruksi ini sepertinya berfungsi jika digunakan di luar \begin{axis} ... \end{axis}. Apakah saya melewatkan sesuatu yang penting tentang TikZ / PGF?

Contoh minimal

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

Jawaban

1 StevenB.Segletes Oct 21 2020 at 18:47

Anda perlu memperluas \clabelsebagai argumen \addlegendentry, karena legenda itu sendiri dibuat setelah plot selesai. Pada saat itu, nilai lokal \clabeltelah hilang.

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