在 foreach 循环中使用 \pgfplotsinvokeforeach

在 foreach 循环中使用 \pgfplotsinvokeforeach

我尝试\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}

相关内容