![绘制 x 列重置/数据连接在一起而不是按列堆叠的数据](https://linux22.com/image/366991/%E7%BB%98%E5%88%B6%20x%20%E5%88%97%E9%87%8D%E7%BD%AE%2F%E6%95%B0%E6%8D%AE%E8%BF%9E%E6%8E%A5%E5%9C%A8%E4%B8%80%E8%B5%B7%E8%80%8C%E4%B8%8D%E6%98%AF%E6%8C%89%E5%88%97%E5%A0%86%E5%8F%A0%E7%9A%84%E6%95%B0%E6%8D%AE.png)
考虑这种格式的数据文件:
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}