gnuplot如何使用来自不同文件的数据来缩放y轴

时间:2013-03-26 13:18:30

标签: gnuplot

我正在尝试绘制一个csv文件,如下所示:

531049
b 122198
c 3411487
d 72420
e 1641
f 2181578
。 。
。 。
。 。

但是应该使用另一个格式相同的csv文件来缩放这些值。 即其他档案
a 45
b 12 ...

我想绘制531049/45等等。第一列是x轴,第二列是y轴

如何在不合并2个文件的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

Gnuplot的使用是为了从单个文件/流中读取数据,因此您需要以某种方式合并这两个文件。我会使用python,因为它是几乎所有内容的首选工具。我会编写一个脚本,从2个文件中读取并将数据写入标准输出。类似的东西:

#merge.py
import sys
file1,scale_factor_file = sys.argv[1:]

#Read the scale factors into a dictionary
d = {}
with open(scale_factor_file) as sf:
    for line in sf:
        key,scale_factor = line.split()
        d[key] = float(scale_factor)

#Now open the other file, scaling as we go:
with open(file1) as fin:
    for line in fin:
        key,value = line.split()
        print key,float(value)/d.get(key,1.0)

现在你可以使用gnuplot从管道中读取数据的能力了:

plot '< python merge.py datafile file_with_scale_factors' using 2