1

我正在尝试使用 pgfplots 在乳胶中生成一些图;因为我有几个不同的情节要制作,我正在尝试使用 for 循环。不幸的是,没有成功。实际上,代码执行了 3 次,但 for 循环的变量值始终等于定义循环的列表的第一个值。

例如,以下最小代码

\documentclass[a4paper, 11pt]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{groupplots}

\begin{document}

\makeatletter
\begin{tikzpicture}
  \begin{groupplot}[group style={group size= 2 by 3}]
    \@for\refin:={1,2,3}\do{%
      \nextgroupplot[ylabel={$h = \frac{1}{\refin}$}]
        \addplot {exp(x)};
      \nextgroupplot
        \addplot{2  * x};
    }
  \end{groupplot}
\end{tikzpicture}
\makeatother

\end{document}

生成一个包含 6 个图的图形(如预期的那样),但标签始终为 1/1,而不是 1/2 或 1/3。为什么?

4

1 回答 1

1

您可以使用与https://tex.stackexchange.com/a/539754/36296相同的技巧:

\documentclass[a4paper, 11pt]{article}

\usepackage{pgffor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{groupplots}

\begin{document}

\begin{tikzpicture}
  \begin{groupplot}[group style={group size= 2 by 3}]
    \pgfplotsforeachungrouped \x in {1,2,3}{
    \edef\tmp{
        \noexpand\nextgroupplot[ylabel={$h = \frac{1}{\x}$}]
        \noexpand\addplot {exp(x)};     
    }
    \tmp          
      \nextgroupplot
        \addplot{2  * x};
    }
  \end{groupplot}
\end{tikzpicture}


\end{document}

在此处输入图像描述

于 2021-11-30T14:38:44.767 回答