绘制 x 列重置/数据连接在一起而不是按列堆叠的数据

绘制 x 列重置/数据连接在一起而不是按列堆叠的数据

考虑这种格式的数据文件:

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}

相关内容