我有一个简单的9列文件。我不会为每列计算某些统计数据,然后将其绘制(使用gnuplot)。
1)这是我如何计算除第一列以外的每一列的统计信息。
stats 'data' every ::2 name "stats"
Run Code Online (Sandbox Code Playgroud)
2)在输出屏幕中,我可以看到操作成功。请注意,列数/记录数为8
* FILE:
Records: 8
Out of range: 0
Invalid: 0
Blank: 0
Data Blocks: 1
* COLUMNS:
Mean: 6.5000 491742.6625
Std Dev: 2.2913 703.4865
Sum: 52.0000 3.93394e+06
Sum Sq.: 380.0000 1.93449e+12
Minimum: 3.0000 [0] 490312.0000 [2]
Maximum: 10.0000 [7] 492643.5000 [7]
Quartile: 4.5000 491329.5000
Median: 6.5000 491911.1500
Quartile: 8.5000 492252.2500
Linear Model: y = 121.8 x + 4.91e+05
Correlation: r = 0.3966
Sum xy: 2.558e+07
Run Code Online (Sandbox Code Playgroud)
3)现在,我可以通过添加_x和_y来访问前两列的统计信息
print stats_median_x
print stats_median_y
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我知道我可以简单地添加一个python脚本来预先计算所有这些,但是如果有使用gnuplot本身的简单方法,我宁愿避免使用它。
谢谢!
简短的答案)
stats 'data'using n您会进入到第n 次列...set print和一个do for循环可以创建可用于绘图的数据文件。一个可行的解决方案
set print "StatDat.dat"
do for [i=2:9] { # Here you will use i for the column.
stats 'data.dat' u i nooutput ;
print i, STATS_median, STATS_mean , STATS_stddev # ...
}
set print
plot "StatDat.dat" us 1:2 # or whatever column you want...
Run Code Online (Sandbox Code Playgroud)
关于它的更多信息
寻求帮助gnuplot help stats可能会读到很多有趣的东西:-)。
语法:
stats'filename ' [使用N [:M]] [name'prefix'] [[no] output]]
该命令准备文件一两列中数据的统计摘要。该使用说明符的解释以同样的方式为剧情的命令。请参阅plot有关的详细信息index,every以及using指令。
stats 'data'using 3将为您提供...中的第3列xstats 'data' using 4:5其中的第4和第5 列的统计信息x,y。关于您的解释的注意事项
你说
这就是我如何计算除第一列以外的每一列的统计信息。
stats 'data' every ::2 name "stats"
这不是前两列(不包括前两行)的统计信息,实际上它们的计数器从0开始而不是从1开始。
由于上述假设/解释,当我们阅读
记录:8
这意味着线计算哪里8 ; 您的文件有10行(可用),您指定every ::2了该行,而跳过了前两行,因此有8条记录对统计有用。
的确如此,我们可以更好地理解help stats其中所说的内容
Run Code Online (Sandbox Code Playgroud)STATS_records # total number of in-range data records
暗示“用于计算此统计量”。
在gnuplot 4.6补丁程序级别4 上测试在gnuplot
5.0补丁程序级别1上工作