gnuplot:处理缺少(空)数据的tsv文件
我想打印一个tsv文件,其中缺少一些数据。我正在寻找一种让gnuplot识别空数据的方法。据我所知,gnuplot似乎将行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
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如果你被困在旧版本上,请查看我的答案以找到解决这个问题的方法。