我想绘制一个缺少某些数据的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
进入情节。我怎么能这样做?
答案 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