TikZ:绘制具有缺失值的数据文件

TikZ: plotting data file with missing values

我有这个数据:

data2 缺少第三点。所以我想,我会定义两个不同的 x 列并将 data2 分配给 x2。

问题:data1的第三个点在编译图形中上升到3。如果我有不同的和更多的价值,点数开始去任何地方,但不是他们所属的地方。

这是我用过的代码:

\addplot[only marks, mark = diamond, color = orange, mark size = 3pt]
 table[x=x1, y=data1]{example.dat};
\addlegendentry{data1};

\addplot[only marks, mark = square, color = gray, mark size = 3pt]
 table[x=x2, y=data2]{example.dat};
\addlegendentry{data2};

\addplot[only marks, mark = o, color = blue, mark size = 3pt]
 table[x=x1, y=data3]{example.dat};
\addlegendentry{data3};

这是我得到的图表:

非常感谢!

顺便说一句。在真实数据中,一个数据集在数据中间缺少一个 x/y 值。我希望与我的示例相比这无关紧要。

pgfplots 将 2 个制表符解释为一个分隔符。因此,它将数据文件视为:

x1  x2  data1   data2   data3
0   0   1   2   3
1   1   1   2   3
2   1   3

解决方案 1. 您可以用 NaN 替换空单元格。 pgfplots 将正确解释:

x1  x2  data1   data2   data3
0   0   1   2   3
1   1   1   2   3
2   nan 1   nan 3

解决方案 2. 使用其他类型的分隔符(例如,分号或逗号):

\begin{filecontents*}{example.csv}
x1;x2;data1;data2;data3
0;0;1;2;3
1;1;1;2;3
2;;1;;3
\end{filecontents*}
\pgfplotstableread[col sep = semicolon]{example.csv}\mydata

\begin{document}
...

这里我将数据文件包含在 TeX 文件中,但它也应该与单独的数据文件一起使用。