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

Scripting 从gnuplot中的不同行获取特定元素的值,scripting,graph,plot,gnuplot,Scripting,Graph,Plot,Gnuplot,使用gnuplot4.2,是否可以获取特定列/行的值并以某种方式使用该值 例如,假设我的数据文件包含以下内容 #1 2 7 13 5 11 23 17 53 12 对于第1列为x轴、第2列为y轴的简单绘图,我将:- plot 'datafile' using 1:2 我要做的是通过第2列(13)中的第一个元素规范化第2列中的所有数据。在gnuplot本身中有没有一种方法可以做到这一点(也就是说,不需要先使用脚本语言或其他东西来预处理数据) 干杯在一个新的栏目中添加13个,然后使用: 使

使用gnuplot4.2,是否可以获取特定列/行的值并以某种方式使用该值

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

#1  2
7  13
5  11
23 17
53 12
对于第1列为x轴、第2列为y轴的简单绘图,我将:-

plot 'datafile' using 1:2
我要做的是通过第2列(13)中的第一个元素规范化第2列中的所有数据。在gnuplot本身中有没有一种方法可以做到这一点(也就是说,不需要先使用脚本语言或其他东西来预处理数据)


干杯

在一个新的栏目中添加13个,然后使用:

使用1:($2/$3)绘制“数据文件”

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

看一看这张照片。按照这些思路,您可以编写一个自定义函数,在第一次调用时将基值存储在自定义变量中,并在后续调用时返回该变量


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

使用运行平均数演示,我成功实现了标准化为第二列第一个值的绘图

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

first(x) = ($0 > 0 ? base : base = x)
plot file.dat u 1:(first($2), base/$2)
应该提到的是,这不是使用gnuplot 4.2完成的


编辑:根据克里斯托夫的建议进行更新。

Nice,+1。更一般地说,可以检查行号是否为0,以设置
base
值:
first(x)=($0>0?base:base=x)