Gnuplot获取数据文件中特定数据的值? (有或没有使用统计数据)

时间:2016-06-07 08:55:21

标签: gnuplot

想象一下,我有一个包含两列的数据文件。在gnuplot正在运行

stats 'datafile' u 1:2

允许我找到两列的最小值和最大值。变量 STATS_index_min_xSTATS_index_min_y分别给出了索引 第一列和第二列的最小值。它在文档中说他们 就是这样

data[STATS_index_min_x] == STATS_min_x

现在想象一下需要访问data[STATS_index_min_x-1]或。{ data[STATS_index_min_x+1]。我怎样才能做到这一点 ?实际上我怎么能访问任何 gnuplot中任何列的特定数据?

4 个答案:

答案 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)

您可以结合使用statsevery来选择数据。以下应打印您要查找的值:

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