我正在尝试绘制一个如下所示的 csv 文件:
a 531049
b 122198
c 3411487
d 72420
e 1641
f 2181578
。.
. .
. .
但这些值应该使用另一个格式相同的 csv 文件进行缩放。即其他文件
a 45
b 12 ...
我想绘制 531049/45 等等。第一列是 x 轴,第二列是 y 轴
在不合并 2 个文件的情况下如何做到这一点?
我正在尝试绘制一个如下所示的 csv 文件:
a 531049
b 122198
c 3411487
d 72420
e 1641
f 2181578
。.
. .
. .
但这些值应该使用另一个格式相同的 csv 文件进行缩放。即其他文件
a 45
b 12 ...
我想绘制 531049/45 等等。第一列是 x 轴,第二列是 y 轴
在不合并 2 个文件的情况下如何做到这一点?
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