gnuplotでヒストグラムをつくる


ヒストグラムを書くとき、gnuplotを使えばソフトは必要ないし、プログラムも書く必要ないので楽。
大学の授業でボックスミュラー法の確認のために使った。また何をしているのか調べるのが面倒なのでメモ。

gnuplotを起動して以下を入力すればおっけー。
hoge.datが入力データ。

set style fill solid
filter(x,y)=floor(x/y)*y
plot "hoge.dat" u (filter($1,0.01)):(1) smooth frequency with boxes

まず、set style fill solidでスタイルを図形塗りつぶしに変更。
後に行う箱プロットの中身を塗りつぶす。

次に、filter(x,y)=floor(x/y)*yでフィルタを定義。
このフィルタは関数のようなもので、xyの幅に丸めることができる。
例えば、0.11245のような値を0.01幅で丸めるとき、x/yで11.245にしたものをfloorで11にして、再度0.01倍することで0.11に丸めている。

最後に、plot "hoge.dat" u (filter($1,0.01)):(1) smooth frequency with boxesでヒストグラムのプロット。
uusingの略記。
smooth frequencyu a:bとすれば、「同じaが現れれときそのaの登場回数につき頻度をb増やす」といったことが実現できる。
今回はここでのxfilterを使って、データを0.01幅で丸めたものが等しければその値に属する頻度を1増やしている。
with boxesで頻度の箱を表示しておしまい。

こんな感じになる。