gnuplot:处理缺少(空)数据的tsv文件

时间:2014-07-29 05:24:02

标签: gnuplot

我想绘制一个缺少某些数据的tsv文件。我正在寻找让gnuplot识别空数据的方法。据我所知,gnuplot似乎将行a\t\tc视为[a,c],但我希望它将数据视为[a,empty,c]

我有一个文件data.tsv,就像这样:

data1     data2     data3
1.2       12.4      129.3
2.4       32.4      134.8
3.2                 121.5
3.4       15.4      214.5

请考虑将数据与\t分开。也就是说,第0行是" data1\tdata2\tdata3\n",第3行是' 3.2\t\t121.5\n' 。请注意,在第3行中,缺少data2的值。

当我告诉gnuplot

set datafile separator "\t"
plot "data.tsv" using 1:2

gnuplot绘制数据,是的,但它使用第3行上data3的值,从而绘制[1.2, 2.4, 3.2, 3.4][12.4, 32.4, 121.5, 15.4]的关系。

我想将[1.2, 2.4, 3.4][12.4, 32.4, 15.4]联系起来。至少,我不希望121.5进入情节。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

我想这是你的gnuplot版本中的一个错误(你有哪一个?)。你的最小脚本

set datafile separator "\t"
plot "data.tsv" using 1:2
从版本4.6.4开始,

在Linux上运行正常。对于4.6.3和以前的版本,我也看到了你的问题。

答案 1 :(得分:2)

如果您遇到旧版本的gnuplot而想要解决此问题,可以使用awk更改数据格式:

$ awk -F'\t' -v OFS=',' '{$1=$1}1' data.tsv
1.2,12.4,129.3
2.4,32.4,134.8
3.2,,121.5
3.4,15.4,214.5

这个简短的awk脚本将输入中的制表符转换为输出中的逗号。 $1=$1分配只是让awk触摸文件的一种方式。 <{1}}最后总是评估为true,因此打印了这一行。

您可以直接在gnuplot中使用它:

1