我尝试\pgfplotsinvokeforeach
在一个\foreach
循环中运行一个循环,在一个图中绘制变量 var1_roll1 - var1_roll10,在另一个图中绘制变量 var2_roll1 - var2_roll10。两个循环单独运行良好,但两者结合会出现以下错误:
! \pgffor@body 定义中的参数数量非法。
有人能帮忙吗?这是代码。谢谢!
\begin{figure}
\foreach \dt in {1,2} {
\begin{tikzpicture}
\begin{axis}[]
\pgfplotsinvokeforeach {1,2,...,10} {
\addplot[] table[x=x,y=var\dt_roll#1] {../plot/test.txt};
}
\end{axis}
\end{tikzpicture}
}
\end{figure}
答案1
在这种情况下您不需要使用\pgfplotstableinvokeforeach
,只需嵌套两个普通\foreach
循环就可以了:
\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\pgfplotstableread{
x var1_roll1 var1_roll2 var2_roll1 var2_roll2
1 10 11 20 21
2 10 11 20 21
}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}
\foreach\dt in {1,2}{
\foreach\roll in {1,2}{
\addplot table [y=var\dt_roll\roll]{\datatable};
}
}
\end{axis}
\end{tikzpicture}
\end{document}