多数のデータを一定幅ごとにまとめて表示するヒストグラムも、matplotlibでは簡単に作成できます。これは「
hist」というメソッドで作成します。
《matplotlib》.hist( データ )
ヒストグラムに使うデータ(数値のリスト)を指定します。この他にも、多数のラベル付き引数が用意されています。以下に主な引数を挙げておきましょう。
bins ――分割数です。例えば、10にすれば、データを10に均等幅で割り、それぞれのデータ数をヒストグラムとして描きます。
range ――データの最小値と最大値をタプルで指定します。
normed ――正規化(全データの総和が1となるように変換する)。Trueにすると、正規化します。
cumulative ――Trueに設定すると、累積ヒストグラムを描画します。
stacked ――Trueにすると、積み上げヒストグラムとして描画します。
orientation ――グラフの向き。
'vertical'(垂直方向)または
'hoizontal'(水平方向)のいずれかを指定します。
この他にもまだまだありますが、上記のものぐらいわかっていれば基本的なヒストグラムは作成できるでしょう。
■histの戻り値
この
histは、実はちょっと変わった戻り値を持っています。整理するとこんな感じになっています。
n, bins, patches = hist(○○)
n ――Y軸の値のデータ
bins ――X軸の値のデータ
patches ――
patchのリスト(
patch = ヒストグラムの各棒のオブジェクト)
描画したヒストグラムの内容について、こうした戻り値が返されるのです。これをもとにして、ヒストグラム化したデータを再利用できるんですね。
では、実際の利用例を下に挙げておきましょう。ここではランダムに1000個の偏差値データを作成し、これをヒストグラム化しています。
偏差値データは、numpyの
random.randnを使っています。この
randnは、標準正規分布を用いた乱数を作成するもので、引数には生成するデータ数を指定します。これで標準正規分布に基づいたランダムなデータが作成できるので、これを10倍し50を足して、擬似的な偏差値データを用意しました。
また、ヒストグラムの他にオレンジ色の曲線グラフが描かれていますが、これはmatplotlibの
mlabにある
normpdfというメソッドを利用して描いています。これは確率密度関数のメソッドで、元データ、位置、スケールといった値を引数に指定して実行すると、元データの確率密度のリストを返します。これを元に、
plotで描画をしています。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlb
value = np.random.randn(1000) * 10 + 50
n, bins, patches = plt.hist(value, bins=25, normed=1)
pdf = mlb.normpdf(bins, 50, 10)
plt.plot(bins, pdf)
plt.show()
