Подгонка нормализованной гистограммы с помощью gnuplot

У меня есть файл данных, содержащий N случайных чисел, сгенерированных из C-кода. Теперь я хочу нормализовать гистограмму из этого файла данных, а затем подогнать ее под заданную функцию распределения. Как я могу это сделать? Это мой код 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
288
1

Ответы 1

Начиная с версии 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"

Спасибо. Я обновил свой ubuntu до версии 5.2.2, и он работает. Но тогда как подогнать эту нормализованную гистограмму к заданному распределению?

Lê Dũng 12.04.2018 12:01

Другие вопросы по теме