![在 pgfplots 中绘制文件集中的数据](https://linux22.com/image/296700/%E5%9C%A8%20pgfplots%20%E4%B8%AD%E7%BB%98%E5%88%B6%E6%96%87%E4%BB%B6%E9%9B%86%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE.png)
我有大量包含 xy 数据的文件,我想将它们绘制在一个图中。我知道我可以手动一点一点地完成这项工作,这对于只有几个文件的情况是可以的,但对于大量的文件则不行。
\documentclass[crop]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usepackage{filecontents}
\begin{document}
\begin{filecontents}{data01.dat}
0 0
1 1
2 2
\end{filecontents}
\begin{filecontents}{data02.dat}
0 1
1 2
2 0
\end{filecontents}
\begin{tikzpicture}
\begin{axis}
\addplot table [x index=0,y index=1] {data01.dat};
\addplot table [x index=0,y index=1] {data02.dat};
\end{axis}
\end{tikzpicture}
\end{document}
有没有办法在 pgfplots 中自动绘制一组编号文件甚至某个文件夹中的所有文件?
答案1
使用\foreach
循环( 的一部分pgf
):
\documentclass[crop]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\usepackage{filecontents}
\begin{document}
\begin{filecontents}{data01.dat}
0 0
1 1
2 2
\end{filecontents}
\begin{filecontents}{data02.dat}
0 1
1 2
2 0
\end{filecontents}
\begin{tikzpicture}
\begin{axis}
\foreach \num in {01,02} {
\addplot table [x index=0,y index=1] {data\num.dat};
};
\end{axis}
\end{tikzpicture}
\end{document}
对于大量文件,您可以按系列进行定义,例如:
\foreach \num in {1,2,...,18} {
\addplot table [x index=0,y index=1] {data\ifnum\num<10 0\fi\num.dat};
};
绘制data01.dat
, data02.dat
, data03.dat
, ..., data18.dat
。感谢评论中 egreg 提供的快速前导零解决方案。