我有一个包含从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"
答案 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'
应用于您的示例,您只能将实际绘图线更新为
plot "out.dat" u (hist($1,width)):(1.0/(sum)) smooth fnormal w boxes lc rgb "green"