我的gnuplot直方图未标准化为1,而是标准化为其他值。为什么?

时间:2019-07-04 11:23:47

标签: gnuplot histogram

我已经使用gnuplot绘制了直方图,但是以某种方式未将其标准化为1,而是将其标准化为其他值。

我正在使用的gnuplot代码:

n=50
min=0.82166501
max=1.66893753
width=(max-min)/50 
hist(x,width)=width*floor(x/width)
plot 'CHbl.dat' u (hist($1,width)):(1.0/(2880144*width)) smooth freq w lines lc rgb"red" title "CH"

在这里2880144是我的数据点数。 我得到的输出直方图:

为什么会这样?我应该如何将其标准化为1?

enter image description here

1 个答案:

答案 0 :(得分:2)

有几种缩放直方图的方法。 让我们获取一些随机数据。您可以将数据放入x-bin和

a)汇总箱中的所有y值。那是... :2 smooth frequency

b)汇总箱中的所有y值,并对其进行缩放以使面积为1。那是... :2 smooth fnormal

c)计算垃圾箱中的发生次数。那是... :(1) smooth frequency

d)将bin中的所有y值相加,然后按峰对其进行归一化。那是...:($2/STATS_max)

正如伊桑(Ethan)所说,归一化通常针对area = 1,即b)。 您是要d)吗?

代码:

### Normalized histograms
reset session
set key top left

set samples 10000
set table $Data
    plot [-5:5][-5:5]'+' u (invnorm(rand(0))):(rand(0)) w table
unset table

min = -5
max = 5
width = (max-min)/50.
bin(x) = width*floor(x/width)

set multiplot layout 2,2
    plot $Data u (bin($1)):2 smooth frequency w boxes lc rgb "red" title "smooth frequency"
    plot $Data u (bin($1)):2 smooth fnormal w boxes lc rgb "web-green" t "smooth fnormal"
    plot $Data u (bin($1)):(1) smooth frequency w boxes lc rgb "web-blue" t "occurrences per bin"

    set table $FindMax
        plot $Data u (bin($1)):2 smooth frequency
    unset table
    stats $FindMax u 2 nooutput
    plot $Data u (bin($1)):($2/STATS_max) smooth frequency w boxes lc rgb "magenta" t "normalized max to 1"
unset multiplot
### end of code

结果:

enter image description here