从gnuplot中的不同行获取特定元素的值

时间:2008-10-28 05:28:54

标签: scripting graph plot gnuplot

使用gnuplot 4.2,是否可以获取特定列/行的值并以某种方式使用该值?

例如,假设我的数据文件包含以下内容

#1  2
7  13
5  11
23 17
53 12

对于一个简单的图,其中第1列是x轴,列2是y轴,我会: -

plot 'datafile' using 1:2

我要做的是通过该列中的第一个元素(13)规范化第2列中的所有数据。有没有办法在gnuplot本身中执行此操作(即,不使用脚本语言或首先预处理数据)?

干杯

3 个答案:

答案 0 :(得分:5)

使用运行平均值演示,我设法实现了标准化为第二列第一个值的图。

base变量用于存储参考值,first函数在第一行初始化base

first(x) = ($0 > 0 ? base : base = x)
plot file.dat u 1:(first($2), base/$2)

应该提到的是,这不是使用gnuplot 4.2完成的。

修改:使用Christoph的建议更新。

答案 1 :(得分:2)

如果您的基值(例如13)位于数据集的第一行,您应该可以使用CVS版本的gnuplot执行您想要的操作。

查看running averages demo。沿着这些方向,您可以编写一个自定义函数,在第一次调用时将基值存储在自定义变量中,并在后续调用中返回该变量。

(由于该演示仅针对CVS版本列出,因此我认为当前版本不提供所需的功能。)

答案 2 :(得分:0)

添加一个新的13列,然后使用:

使用1:($ 2 / $ 3)

绘制'datafile'