TikZ's \ foreach tuple trong PGF

Oct 21 2020

Tôi muốn vẽ một danh sách dữ liệu và thêm vào các mục chú giải. Tôi đã cố gắng sử dụng \foreachcho các bộ giá trị được triển khai trong pgfforgói và được tải bằng TikZ. Thật không may, biến thứ hai mô tả nhãn \clabeldường như không được xác định cho LaTeX. Việc xây dựng này dường như hoạt động nếu được sử dụng bên ngoài \begin{axis} ... \end{axis}. Tôi có bỏ lỡ điều gì cần thiết liên quan đến TikZ / PGF không?

Ví dụ tối thiểu

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

Trả lời

1 StevenB.Segletes Oct 21 2020 at 18:47

Bạn cần phải mở rộng \clabellàm đối số \addlegendentry, vì bản thân chú giải được tạo sau khi hoàn thành các âm mưu. Đến thời điểm đó, giá trị địa phương của \clabelđã bị mất.

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