この記事では、Pythonで matplotlib を使ってヒストグラムを描画する方法を解説します。ヒストグラムは、量的データの分布を見るのに用いられます。
基本的な matplotlib の使い方は以下の記事を参照してください。
それでは、ヒストグラムの使い方を見ていきましょう!
ヒストグラムを描画するには matplotlib.pyplot
の hist()
関数を使います。
import matplotlib.pyplot as plt
plt.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,
*, data=None, **kwargs)
hist()
にデータを渡すことで自動的に階級を分けてヒストグラムを作成してくれます。
import matplotlib.pyplot as plt
# データ
d = [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10]
# ヒストグラムの作成
plt.hist(d)
# 表示
plt.show()
bins
を指定することで階級数を指定できます。ちなみに、bins のデフォルトは 10 です。
import matplotlib.pyplot as plt
n = [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10]
# bins を 5 に指定
plt.hist(n, bins=5)
plt.show()
データが 10種類あって bins が 5つなので 2つの階級のデータがまとめて1つの棒で表現されています。
データの種類以上の bins を指定すると歯抜けになってしまう。1つの棒が表現する値の幅を広くしたいなら少なくし、狭くしたいなら多くします。
import matplotlib.pyplot as plt
n = [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10]
# bins に 11 を指定
plt.hist(n, bins=11)
# 表示
plt.show()
ヒストグラムを複数描画するには以下のような方法があります。
複数のデータをリストなどのコレクションでまとめて渡すことで、ヒストグラムを並べて描画できます。
import matplotlib.pyplot as plt
import numpy as np
# 男女別の身長
man = np.random.normal(168.0, 7.1, 100)
woman = np.random.normal(154.5, 7.0, 100)
# コレクションでまとめてデータを渡す
plt.hist([man, woman])
# 表示
plt.show()
積み上げヒストグラムを描画するには 複数のデータをリストなどのコレクションでまとめて渡し、stacked
に True
を指定することで実現できます。
import matplotlib.pyplot as plt
import numpy as np
# 男女別の身長
man = np.random.normal(168.0, 7.1, 100)
woman = np.random.normal(154.5, 7.0, 100)
# 複数のデータを渡して stacked に True を指定
plt.hist((man, woman), stacked=True)
# 表示
plt.show()
複数のヒストグラムを重ねることでデータの特徴を比較したりすることができます。alpha で透明度を指定することで重なっている部分も見やすくすることができる。
以下のコードでは、男女別の身長をヒストグラムで表現しています。
import matplotlib.pyplot as plt
import numpy as np
# 男女別の身長
man = np.random.normal(168.0, 7.1, 100)
woman = np.random.normal(154.5, 7.0, 100)
# alpha を 0.5 に指定
plt.hist(man, alpha=0.5)
plt.hist(woman, alpha=0.5)
# 表示
plt.show()
凡例を表示するには、ヒストグラムの label
を設定してから legend()
を呼び出すことで配置できます。
import matplotlib.pyplot as plt
import numpy as np
# 男女別の身長
man = np.random.normal(168.0, 7.1, 100)
woman = np.random.normal(154.5, 7.0, 100)
# label の設定
plt.hist(man, alpha=0.5, label='Man')
plt.hist(woman, alpha=0.5, label='Woman')
# 凡例の配置
plt.legend()
# 表示
plt.show()
matplotlib には、グラフを見やすくするために様々なオプションが用意されています。試しに簡単なグラフのオプションを変更してみて、どのようなものがあるか確認していきましょう!
先ほどの簡単なヒストグラムをいじってみます。
import matplotlib.pyplot as plt
# データ
d = [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10]
# ヒストグラムの作成
plt.hist(d)
# 表示
plt.show()
棒の幅を rwidth
で変更できます。
plt.hist(n, rwidth=0.5)
棒の色を color
で変更できます。
plt.hist(n, color='red')
histtype
に 'step'
を指定することで枠線のみにできます。
plt.hist(n, histtype='step')
orientation
に 'horizontal'
を指定することで棒の向きを横にできる。
plt.hist(d, orientation='horizontal')
この記事では、matplotlib を使ってヒストグラムを描画する方法を解説しました。
ヒストグラムを使うことで量的データの分布を視覚的に捉えることができます。データの量を比較したい場合に使ってみましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ