ヒストグラム(度数表)

概要

ある値の列からなるデータがあるとき, コレに関するヒストグラムを作成する. 直接的にその機能は gnuplot にはなく, 度数を計算する必要があるが, 次の方法を使うとうまくこれが gnuplot の機能で実現する.

References

手法

smooth frequencyplot すると x に関して重複した点があった場合に y を加算した一つの点を出力する. そこで x:(1.0) ( \(y=1\) ) からなるデータを smooth frequency で描くと y 軸に度数が出力される. これに with boxes 等の装飾を施すことでよくあるヒストグラムを描ける. データは昇順にソートしておくのが無難. x の上に置く box は x を中心とする幅を持った箱として描画されるので, 必要に応じて 0.5 だけずらすなどすると見やすくなる.

width = 1.0
hist(x) = width * (floor(x / width) + 0.5)
set boxwidth width * 1.0
set xtics width

$data <<EOD
0
1
1
1
1
2
2
3
6
8
EOD

set xrange [0:10]
set yrange [0:]
set ytics 1
set grid
set style fill solid 0.5 border lc rgb '#55aaff'
plot $data u (hist($1)):(1) smooth frequency with boxes fillcolor '#55aaff' not
Gnuplot Produced by GNUPLOT 6.0 patchlevel 0 0 1 2 3 4 0 1 2 3 4 5 6 7 8 9 10 gnuplot_plot_1