pgfplots 中的循环问题

pgfplots 中的循环问题

我正在尝试循环一个参数以在 grouppplots 中生成移位图,如下面的 MWE 所示,但是\k的参数中似乎无法识别的值sin,即黑线没有移位。我手动插入了一条带移位的红线0.25进行比较。我做错了什么?

\documentclass{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}

\begin{tikzpicture}
\begin{groupplot}[group style={group size=1 by 3},width=\textwidth,height=4cm,xmin=0,xmax=2,samples=200]
\pgfplotsforeachungrouped \k in {0,0.25,0.5}{
  \nextgroupplot
  \addplot[domain=0:2] gnuplot {sin(2*pi*(x - \k))} node[above,pos=0.5]{\k};
  \addplot[domain=0:2,red,dashed] gnuplot {sin(2*pi*(x - 0.25))} node[above,pos=0.5]{\k};
}
\end{groupplot}
\end{tikzpicture}

\end{document}

输出:

在此处输入图片描述

答案1

欢迎来到不断膨胀的宇宙!(是的,这些膨胀技巧很容易让人陷入疯狂。;-))

\documentclass{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}

\begin{tikzpicture}
\begin{groupplot}[group style={group size=1 by 3},width=\textwidth,height=4cm,xmin=0,xmax=2,samples=200]
\pgfplotsinvokeforeach{0,0.25,0.5}{
  \nextgroupplot
  \edef\temp{\noexpand\addplot[domain=0:2] gnuplot {sin(2*pi*(x - #1))}
  node[above,pos=0.5]{#1};}
  \temp
  \edef\temp{\noexpand\addplot[domain=0:2,red,dashed] gnuplot {sin(2*pi*(x -
  0.25))} node[above,pos=0.5]{#1};}
  \temp
}
\end{groupplot}
\end{tikzpicture}
\end{document}

在此处输入图片描述

“解释”:在使用 pgfplots 一段时间后,人们会遇到一些标准技巧应用哪一个直到获得期望的结果。;-)

相关内容