Scripting 从gnuplot中的不同行获取特定元素的值
使用gnuplot4.2,是否可以获取特定列/行的值并以某种方式使用该值 例如,假设我的数据文件包含以下内容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个,然后使用: 使
#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)
。