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

gnuplot:处理缺少(空)数据的tsv文件,gnuplot,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

我想打印一个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行中,数据2的值丢失

当我告诉gnuplot

set datafile separator "\t"
plot "data.tsv" using 1:2
gnuplot绘制数据,是的,但它在第3行使用数据3的值,从而绘制
[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
进入情节。我该怎么做呢?

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

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

从4.6.4版开始,我就可以在Linux上正常工作。对于4.6.3和以前的版本,我也看到了您的问题。

如果您使用的是较旧版本的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中使用它:

set datafile separator ","                                   
plot "<awk -F'\t' -v OFS=',' '{$1=$1}1' data.tsv" using 1:2
设置数据文件分隔符“,”

plot“很遗憾,我使用的是4.4版。我很高兴知道升级解决了这个问题。谢谢你!+1发现了这个错误。@Yosh如果你被困在旧版本上,请查看我的答案以找到解决这个问题的方法。