带有重复数据的gnuplot历史图表

时间:2012-12-09 23:39:13

标签: gnuplot

我有这些数据:

0 0.105773
1 -0.062457
2 0.005387
3 -0.000000
4 -0.000000
5 0.000000
6 0.000000
7 0.000000
0 0.116266
1 -0.129877
2 0.004714
3 -0.000000
4 -0.000000
5 0.000000
6 0.000000
7 0.000000

第一列中的每个不同值都应该是图中的一条线,因此图形将有8条线。我需要一个历史图表,每次这8个数字重复它将表示X轴上的增量,第二列上的值表示Y轴上的时间点。

有没有办法用gnuplot做到这一点?我不知道如何让它以日志的方式解释数据。

1 个答案:

答案 0 :(得分:2)

你需要将数据打成gnuplot喜欢的格式。我喜欢使用python,这是一个应该做的技巧:

import sys
from collections import defaultdict

fname = sys.argv[1]
with open(fname) as fin:
    data = defaultdict(list)  
    for line in fin:
        x,y = line.split()
        data[int(x)].append(float(y))

for k,v in sorted(data.items()):
    for i,elem in enumerate(v):
        print i,elem
    print
    print

你可以像这样绘制数据文件:

plot '<python pythonscript.py data.dat' u 1:2:(column(-2)) w lines lc variable lw 3

或者,如果您需要稍微调整图例中的数据:

plot for [i=0:10] '<python pythonscript.py test.dat' index i u 1:2 w lines lw 3 title sprintf('Geophone %d',i)

其中10只是一个足够大的数字: - )。