在 pgfplots 中绘制文件集中的数据

在 pgfplots 中绘制文件集中的数据

我有大量包含 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 提供的快速前导零解决方案。

相关内容