考虑这种格式的数据文件:
x y
0 2
1 3
2 4
0 3
1 5
2 6
0 5
1 7
2 8
第一列重复了三次([0 1 2]
),这里有三组不同的数据集。
使用 pgfplots 处理文件的更方便的方法是采用以下格式:
x y z w
0 2 3 5
1 3 5 7
2 4 6 8
但是我使用的软件会以第一种格式输出数据。是否可以绘制第一种格式的数据并最终得到与以下 mwe 相同的图?
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{data.txt}
x y z w
0 2 3 5
1 3 5 7
2 4 6 8
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table [y=y] {data.txt};
\addplot table [y=z] {data.txt};
\addplot table [y=w] {data.txt};
\end{axis}
\end{tikzpicture}
\end{document}
期望输出:
以下是包含其他格式的数据(以及默认结果)的代码:
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{data.txt}
x y
0 2
1 3
2 4
0 3
1 5
2 6
0 5
1 7
2 8
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table [y=y] {data.txt};
\end{axis}
\end{tikzpicture}
\end{document}
类似“当 x 增加时,继续情节,否则开始新的情节”这样的操作就可以达到目的。
答案1
您可以skip coords index={<begin>}{<end>}
使用使用 pgfplot 绘图时如何从文件中选择有限数量的样本, 例如
这是一个完整的例子:
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{data.txt}
x y
0 2
1 3
2 4
0 3
1 5
2 6
0 5
1 7
2 8
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table [skip coords between index={3}{9},y=y] {data.txt};
\addplot table [skip coords between index={0}{3},
skip coords between index={6}{9},y=y] {data.txt};
\addplot table [skip coords between index={0}{6},y=y] {data.txt};
\end{axis}
\end{tikzpicture}
\end{document}