ここでは「Matplotlib」を用いたヒストグラムを作成する方法について解説しています。
行ったこと
データはkaggleで配布されているtitanicのcsvファイルを使用しました。
内容としては年齢(Age)のヒストグラムになります。
基本的な型
Axes.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False)
ヒストグラムを作成するには最低限の引数としては「Axes.hist(データ,プロットタイプ)」になります。
X | 入力データ(配列) |
bins | 階級数(int),階級(list)。bins=’auto’に指定すると自動で設定される。 |
range | binsの範囲を指定。「range=(x.min(),x.max())」 |
density | ヒストグラムの面積を1にするもの。Trueで確率密度の描画になる。 |
weights | 既にbinnedされているヒストグラムを使用する場合に使用するもの。 |
cumulative | 累積値の設定。boolか-1に設定可能。 |
bottom | 各binの底の位置。array-like,scalar,Noneを指定できる。 |
histtype | 描画のタイプ設定。’bar’、 ‘barstacked’、 ‘step’、 ‘stepfilled’が選択可能。デフォルトではbar。 |
align | ヒストグラムバーの水平方向の配置設定。left,mid,rightが選択可能。デフォルトではmid。 |
orientation | 方向の設定。vertical、horizontalの選択が可能。デフォルトではvertical |
rwidth | binの幅を設定。数値はfloatで指定。デフォルトはNone(自動調節)。 |
log | 対数の設定。boolで設定可能。デフォルトではFalse |
color | 色の設定。線の色が指定できる。 |
label | ラベルの設定。 |
stacked | データの積み重ね設定。 |
ヒストグラム作成
デフォルトのヒストグラム(引数がデータだけ)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#1---csv読込み
df = pd.read_csv('titanic.csv')
#2---データをNumpyに入れる
data = np.array(df['Age'])
#3---matpltlibの宣言
fig = plt.figure()
#4---サブプロットの設定
ax = fig.add_subplot(1, 1, 1)
#5---ヒストグラムの作成
ax.hist(data)
plt.savefig("plot_titanic_age.png")
上記がプログラムになります。
5のヒストグラム作成部分に着目して下さい。引数はデータのみになります。
非常にシンプルなヒストグラムになりました。
グラフ内に線を引く
#5---ヒストグラムの作成
ax.hist(data,ec='black')
引数にecを追加するだけです。
階級数の設定
#5---ヒストグラムの作成
ax.hist(data,ec='black',bins=5)
デフォルトの階級数から変化していることが確認できます。
累積の設定
#5---ヒストグラムの作成
ax.hist(data,ec='black',cumulative=-1)
対数の設定
#5---ヒストグラムの作成
ax.hist(data,ec='black',log=True)
位置の設定
#5---ヒストグラムの作成
ax.hist(data,ec='black',align='right')
右寄りにしてみます。alignをrightに設定します。
色の変更
#5---ヒストグラムの作成
ax.hist(data,color='pink')
水平方向に変更
#5---ヒストグラムの作成
ax.hist(data,orientation="horizontal")
描画の設定
step
#5---ヒストグラムの作成
ax.hist(data,ec='black',histtype='step')
stepfilled
#5---ヒストグラムの作成
ax.hist(data,ec='black',histtype='stepfilled')
確率密度の設定
ヒストグラムの面積を1にする事も可能です。
5の部分に「density=True」を加えて以下のように変更してみます。
ax.hist(data, bins=10,density=True,histtype='barstacked', ec='black')
縦軸が変化していることが確認できます。
最後に
データの見せ方によって色々と設定する必要がありますね。