使用gnuplot拟合标准化直方图

时间:2018-04-11 09:45:13

标签: gnuplot histogram

我有一个包含从C代码生成的N个随机数的数据文件。现在我想从这个数据文件中规范化直方图,然后使其适合给定的分布函数。我怎样才能做到这一点? 这是直方图的gnuplot代码:

width = 5000
hist(x,width)=width*floor(x/width)+width/2.0
set boxwidth width
set style fill solid 0.5
set xrange [0:500000]
set yrange [0:20]
plot "out.dat" u (hist($1,width)):(1.0) smooth freq w boxes lc rgb"green"

1 个答案:

答案 0 :(得分:2)

由于gnuplot版本5.2有一个新的平滑类型smooth fnormal,它完全相同:用相同的x值对所有值求和并对数据进行标准化,使总和为1.

一个简单的例子:

set boxwidth 0.9
set style fill solid 0.5
set yrange [0:*]

$data <<EOD
1
1
2
2
2
3
3
EOD
set style data boxes
plot $data u 1:(1) smooth freq title 'smooth frequency',\
     '' u 1:(1) smooth fnormal title 'smooth fnormal'

enter image description here

应用于您的示例,您只能将实际绘图线更新为

plot "out.dat" u (hist($1,width)):(1.0/(sum)) smooth fnormal w boxes lc rgb "green"