想象一下,我有一个包含两列的数据文件。在gnuplot
正在运行
stats 'datafile' u 1:2
允许我找到两列的最小值和最大值。变量
STATS_index_min_x
和STATS_index_min_y
分别给出了索引
第一列和第二列的最小值。它在文档中说他们
就是这样
data[STATS_index_min_x] == STATS_min_x
现在想象一下需要访问data[STATS_index_min_x-1]
或。{
data[STATS_index_min_x+1]
。我怎样才能做到这一点 ?实际上我怎么能访问任何
gnuplot
中任何列的特定数据?
答案 0 :(得分:3)
据我所知,您无法以这种方式访问文件中的数据(例如数组)。
在Linux / cygwin上,您可以使用帮助函数,该函数使用awk
直接从基础数据文件中提取值。您可以定义以下功能:
getValue(row,col,filename) = system('awk ''{if (NR == '.row.') print $'.col.'}'' '.filename.'')
如果您的数据文件名为datafile
,并且包含以下值:
1 1.4
2 4.3
3 2.5
4 0.0
5 9.0
给出了:
gnuplot> print getValue(3,1,"datafile")
3
gnuplot> print getValue(1,2,"datafile")
1.4
答案 1 :(得分:2)
Gnuplot
没有为此而设计,但你可以作弊; - )
stats 'datafile' u 1:2
plot[STATS_index_max_x+1:STATS_index_max_x+1.5] 'datafile.dat' u 0:1
然后GPVAL_DATA_Y_MIN
(和GPVAL_DATA_Y_MAX
)包含您想要的值。
注意强>
plot '<datafile>' u 0:<column>
绘制了desidered列与0,1,2 ...
的关系曲线答案 2 :(得分:1)
您可以结合使用stats
和every
来选择数据。以下应打印您要查找的值:
stats 'datafile' u 1
imin = STATS_index_min
stats 'datafile' u 1 every ::(imin-1)::(imin-1)
print STATS_min
stats 'datafile' u 1 every ::(imin+1)::(imin+1)
print STATS_min
答案 3 :(得分:0)
找出输入数据文件中第5列具有最大值的行号:
stats 'thermal_site_1.dat' u 5
通过“假”绘图命令和if条件语句,将同一数据文件中第1列的对应值加载到变量Tc
中。
plot 'thermal_site_1.dat' u ($0==STATS_index_max ? Tc=$1 : NaN):5
您可以通过以下方式查看所需的值:
print Tc