我正在尝试循环一个参数以在 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 一段时间后,人们会遇到一些标准技巧应用哪一个直到获得期望的结果。;-)