我有一个.txt文件,其中两组数据在同一列中,但被一些字符分开,这里是一个示例:
#第一组数据
#时间#
速度
1
0.3
2
0.5
3
0.8
4
1.3
#第二组数据
#时间#
速度
1
0.7
2
0.9
3
1.8
4
2.3
所以我想将这两组数据绘制为两条不同的曲线,而且我也不知道每组数据有多少行(或者至少这个数字可以改变),所以我不能使用每条命令。寻找一些gnuplot命令,而不是bash命令)。谢谢
正如您已经提到的every
那样,由于数据集的长度是可变的,因此在这里不起作用(编辑:是的,请参见下面的编辑)。如果您有两个空行来分隔数据集,则可以使用index,请选中help index
。但是,如果您有一个空行,pseudocolumn -1
将会有所帮助。检查help pseudocolumns
。然后,您可以使用三元运算符check定义一个过滤器help ternary
。
码:
### plotting variable datasets
reset session
$Data <<EOD
#First set of data
#Time #Velocity
1 0.3
2 0.5
3 0.8
4 1.3
#Second set of data
#Time #Velocity
1 0.7
2 0.9
3 1.8
#Third set of data
#Time #Velocity
1 0.9
2 1.4
3 2.6
4 3.6
5 4.8
EOD
myFilter(col,i) = column(-1)==i-1 ? column(col) : NaN
set key top left
plot for [i=1:3] $Data u 1:(myFilter(2,i)) w lp pt 7 title sprintf("Set %d",i)
### end of code
编辑:(如@binzo指出的)
实际上,我使它变得太复杂了。不使用过滤器也可以做到以下简单操作(在其他情况下也可以使用过滤器)。注意,块从0开始编号。
plot for [i=1:3] $Data u 1:2 every :::i-1::i-1 w lp pt 7 title sprintf("Set %d",i)
结果:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句