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

qin*_*l97 3 gnuplot

我得到了这样的格式的数据文件:

# begin
16 1
15 2
14 3
13 4
12 5
11 6
Run Code Online (Sandbox Code Playgroud)

现在,我想使用gnuplot在点之间画一条线:

(1, (16/16))  (2, (16/15))  (3, (16/14)) ...  (6, (16/11)) 
Run Code Online (Sandbox Code Playgroud)

如您所见,x轴的范围是[1:6],Y轴对应于从第一列的第一行中的数字(即本例中的16)获得的值除以在第一行中的数字第一列。

问题是我不知道如何在第一行(16)的第一列中获取数字的值,因此我可以执行以下操作

plot "datafile" using 2:(16/$1) with linespoints
Run Code Online (Sandbox Code Playgroud)

我已经做了很多关于如何实现这一目标的搜索,但是没有运气。gnuplot似乎没有提供一些灵活的方法来允许任意数据选择。任何想法如何做到这一点?也许我只是陷入了一个不太常见的问题?

感谢您的帮助。

Chr*_*oph 5

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

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

plot "datafile" using 2:(value/$1) w lp
Run Code Online (Sandbox Code Playgroud)

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

  • 您可以使用例如awk来提取该值:`value = real(system('awk``{if(NR == 2)print $ 1}''datafile')))` (2认同)