使用 pgfplotsinvokeforeach 和 addplot 表

使用 pgfplotsinvokeforeach 和 addplot 表

我有这个最小文件:

\documentclass[]{scrartcl}
\usepackage{filecontents}
\usepackage{pgfplots}
\pgfplotstableset{
  header=true,
  trim cells=true,
  col sep=comma,
}
\begin{document}
\begin{filecontents}{a.dat}
x,y
1,2
2,4
3,6
\end{filecontents}
\begin{filecontents}{b.dat}
x,y
1,3
2,6
3,9
\end{filecontents}
\pgfplotstableread{a.dat}{\DataA}
\pgfplotstableread{b.dat}{\DataB}
\begin{tikzpicture}
  \begin{axis}
    \addplot table[x=x,y=y]\DataA;\label{plt:dataA}
    \addplot table[x=x,y=y]\DataB;\label{plt:dataB}
  \end{axis}
\end{tikzpicture}
\end{document}

实际文件有更多输入文件,但每个文件我都有一行。现在我想,我可以使用来调用它,\addplot而不是使用多行。\addplot\pgfplotsinvokeforeach

像这样:

...
\pgfplotsinvokeforeach{A,B}{
  \addplot table[x=x,y=y]\Data#1;\label{plt:data#1}
}
...

标签部分按预期工作,而\Data#1部分则不工作(也按预期工作)。我尝试了一些\csname和的组合\endcsname,但没有成功。

如何使用这个循环结构从多个表中添加多个图?

答案1

感谢@esdd,

他在评论中对这个问题的回答适用于此 mwe。你可以简单地使用

\pgfplotsinvokeforeach{a,b}{\addplot table[x=x,y=y]{#1.dat};\label{plt:data:#1}}

直接文件名。

相关内容