gnuplot在多个列上计算统计数据
我有一个简单的9列文件。我不想为每一列计算某些统计数据,然后(使用gnuplot)绘制它 1)这是我计算除第一列之外的每一列的统计信息的方法gnuplot在多个列上计算统计数据,plot,gnuplot,Plot,Gnuplot,我有一个简单的9列文件。我不想为每一列计算某些统计数据,然后(使用gnuplot)绘制它 1)这是我计算除第一列之外的每一列的统计信息的方法 stats 'data' every ::2 name "stats" 2)在输出屏幕中,我可以看到操作成功。请注意,列/记录的数量为8 * FILE: Records: 8 Out of range: 0 Invalid: 0 Blank: 0 Data Blocks: 1 * COLUMNS
stats 'data' every ::2 name "stats"
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
3)现在我可以通过像这样附加x和y来访问前两列的统计信息
print stats_median_x
print stats_median_y
我的问题是:
- 如何访问其余6列的统计数据(比如中间值)
- 我怎样才能画出一条线,比如说在所有的中间点上,对着某个X轴
- “如何访问其他列的统计信息?”
使用nstats“data”访问第n列
- “如何绘制例如所有中间带?”
e、 g.
和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...
再多说几句使用
帮助统计信息向gnuplot自身寻求帮助
可以阅读很多有趣的东西:-)
语法:stats“文件名”[使用N[:M]][名称“前缀”][[no]输出]]
此命令准备文件中一列或两列数据的统计摘要。使用指定符的解释方式与使用绘图命令的方式相同。有关
索引
、每个
和使用
指令的详细信息,请参见绘图
- 从第一个突出显示的句子中,我们可以理解它每次为一列或最多两列准备统计数据(很遗憾,让我们以后再看…)李>
- 从第二个突出显示的句子可以看出,它将遵循plot命令的相同语法:
因此stats'data'使用3将为您提供
x
在
中使用第4和第5个的4:5统计“数据”x,y
stats'data'every::2名称“stats”
这是前两列的统计数据,不包括前两行,实际上,它们的计数器从0开始,而不是从1开始every::2
并跳过前两行,因此有8条记录对统计有用。确实如此,我们可以更好地理解在
帮助统计中所说的
意味着“用于计算此统计数据”
正在使用gnuplot版本5.0 patchlevel 1谢谢!我错误地认为“stats”能够在一次调用中处理文件中的所有列。变通是非常有帮助的!不客气。它应该是有用的,但似乎仍然不是这样。顺便说一句,如果您的文件长度超过10行(可能是我们从10行开始,然后以100万行结束),您可能希望使用每一次通过两列并在随后的两行上打印x和y,将执行时间减半。。。在这个例子中,我更喜欢保持平面感。使用另一个技巧,您可以避免将统计数据转储到临时文件中。。。但是为了理智起见,最好保持简单,特别是如果您将在一段时间后重用代码。记忆是有限的,至少是我的:-)@starfry…但这是另一个问题<代码>;-)由于您在类似Linux的环境中工作,因此可以在
do
循环中使用firstrow=system('head-1'.data)
然后打印单词(firstrow,i),STATS\u median,STATS\u mean,STATS\u stddev#…
。。。
STATS_records # total number of in-range data records