如何在gnuplot中的任何处理时间获取特定行中特定列的值?

如何在gnuplot中的任何处理时间获取特定行中特定列的值?,gnuplot,Gnuplot,我得到了如下格式的数据文件: # begin 16 1 15 2 14 3 13 4 12 5 11 6 现在我想使用gnuplot绘制一条穿过点的线: (1, (16/16)) (2, (16/15)) (3, (16/14)) ... (6, (16/11)) 如您所见,x轴是范围[1:6],Y轴对应于从第一列第一行中的数字(即本例中的16)除以第一列每行中的数字所得的值 问题是,我不知道如何获得第一行(16)第一列的数字值,这样我就可以 plot "datafile" usin

我得到了如下格式的数据文件:

# begin
16 1
15 2
14 3
13 4
12 5
11 6
现在我想使用gnuplot绘制一条穿过点的线:

(1, (16/16))  (2, (16/15))  (3, (16/14)) ...  (6, (16/11)) 
如您所见,x轴是范围[1:6],Y轴对应于从第一列第一行中的数字(即本例中的16)除以第一列每行中的数字所得的值

问题是,我不知道如何获得第一行(16)第一列的数字值,这样我就可以

plot "datafile" using 2:(16/$1) with linespoints
我做了很多关于如何做到这一点的探索,但没有运气。gnuplot似乎没有提供一些灵活的方法来允许任意数据选择。有什么办法吗?或者我只是陷入了一个不太常见的问题


提前感谢您的帮助。

您可以使用
stats
命令从数据文件中提取单个数值。使用
every
选项选择行,使用
选项选择列:

col = 1
row = 0
stats 'datafile' every ::row::row using col nooutput
value = STATS_min

plot "datafile" using 2:(value/$1) w lp

请注意,列编号从1开始,行编号从0开始(注释行被跳过并且不被计数)。

在本地计算机上的最新版本的gnuplot中,这可以正常工作。但是我需要在一台远程机器上工作,它的gnuplot版本是4.2,补丁级别是6。但是,stats命令可从4.6版获得。那么你知道实现同样目标的其他方法吗?无论如何,非常感谢。或者我会将该数据文件scp到我的本地计算机,然后生成该图。您可以使用例如awk来提取该值:
value=real(系统('awk'{if(NR==2)print$1}''数据文件))