我有这个最小文件:
\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}}
直接文件名。