1

我有这个数据:

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 做到这一点?我不知道如何让它以日志的方式解释数据。

4

1 回答 1

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只是一个足够大的数字:-)。

于 2012-12-10T20:18:11.937 回答