通过数据头将变量值传递到gnuplot

通过数据头将变量值传递到gnuplot,gnuplot,Gnuplot,假设我的gnuplot脚本希望在数据中的特定点上放置标签或箭头。数据是在另一个程序中创建的,它可以将它们编码到数据文件的头行中。不幸的是,gnuplot无法使用 columnheader(num)用于拉出数据 例如。我创建了直方图数据,包括均值、西格玛和一些极限值。写入数据文件的程序将其放入第一行。如下所示:(0.2743是平均值,3.0是异常值限值) 现在我尝试从脚本中引用它来在绘图中创建箭头 ... mean= columnheader(2) sdev= columnheader(3) lb

假设我的gnuplot脚本希望在数据中的特定点上放置标签或箭头。数据是在另一个程序中创建的,它可以将它们编码到数据文件的头行中。不幸的是,gnuplot无法使用 columnheader(num)用于拉出数据

例如。我创建了直方图数据,包括均值、西格玛和一些极限值。写入数据文件的程序将其放入第一行。如下所示:(0.2743是平均值,3.0是异常值限值)

现在我尝试从脚本中引用它来在绘图中创建箭头

...
mean= columnheader(2)
sdev= columnheader(3)
lboffs= 0.2
set arrow  from 11.0 + mean,0.0 to 11.0 + mean ,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "dark-green"
set arrow  from 11.0 + mean - 3 * sdev,0.0 to 11.0 + mean - 3 * sdev ,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "red"
set arrow  from 11.0 + mean + 3 * sdev,0.0 to 11.0 + mean + 3 * sdev ,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "red"
set arrow  from 11.0,0.0 to 11.0,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "blue"
set label "Mean" at 11.0 + mean + lboffs,GPVAL_DATA_Y_MAX*1.1 tc rgb "dark-green"
set label "+3%"  at 11.0 + mean + 3 * sdev + lboffs,GPVAL_DATA_Y_MAX*1.1 tc rgb "red"
set label "-3%"  at 11.0 + mean - 3 * sdev + lboffs,GPVAL_DATA_Y_MAX*1.1 tc rgb "red"
...
结果证明这不管用

gnuplot> mean= columnheader(2)
         undefined function: columnheader

gnuplot> sdev= columnheader(3)
         undefined function: columnheader
少了什么?或者有更好的方法将变量输入gnuplot吗

谢谢,
Gert

函数
columnheader
绘图
上下文之外不起作用。但是,有几个选项可以访问数据文件第一行中的值

例如,您可以使用外部处理:

fName = 'input.dat'

getColumn(n)=system(sprintf("head -n1 %s | awk '{print $%d}'", fName, n))*1.
mean = getColumn(2)
std = getColumn(3)
或者,您可以将
stats
命令与
every
结合使用,以便仅选择第一行:

stats fName every ::0::0 using 2:3 nooutput
mean = STATS_min_x
std = STATS_min_y
stats fName every ::0::0 using 2:3 nooutput
mean = STATS_min_x
std = STATS_min_y