【初心者向け・データ可視化】Python matplotlibで箱ひげ図を描画しよう!

箱ひげ図とは

箱ひげ図 (box plot) は、データの分布や値のばらつきをわかりやすく表現するためのグラフです。

箱ひげ図は、最大値、最小値に加え、第一四分位数、第二四分位数、第三四分位数と呼ばれる四分位数の情報が含まれています。また第三四分位数から第一四分位数を引いたものを四分位範囲(Inter Quarter Range / IQR)と呼びます。描画するには、matplotlibのplt.boxplot()を利用します

市分位数はパーセンタイルで考えると以下のようになります。

・第一四分位数 => 25パーセンタイル

・第二四分位数 => 50パーセンタイル

・第三四分位数 => 75パーセンタイル

箱ひげ図をmatplotlibで描画しよう!

箱ひげ図を描画するプログラムは下記のようになります。

# Jupyter Notebookを利用している方のみ記述してください。
%matplotlib inline 
import matplotlib.pyplot as plt
import numpy as np

# ある10人の生徒の身長
math = [162, 168, 172, 181, 176, 168, 173, 175, 162, 169]
x = np.array(math)
plt.title('height')
plt.grid() # 横線ラインを入れることができます。

plt.boxplot(x)
plt.show()

"""
# 下記コードでも同様に描画可能です。

import matplotlib.pyplot as plt
# ある10人の生徒の身長
math = [162, 168, 172, 181, 176, 168, 173, 175, 162, 169]
# 箱ひげ図
fig, ax = plt.subplots()
bp = ax.boxplot(math)
plt.title('height')
plt.grid() # 横線ラインを入れることができます。
# 描画
plt.show()
"""

# 上記のコード「fig, ax = plt.subplots()」ですが、Matplotlibではグラフを作る上で2つ方法があります。
# 1つが、ax.plotやax.boxplot等を利用した方法です。オブジェクト指向インターフェースと呼ばれます。
# もう一つが、plt.〇〇でグラフを作る方法です。pyplot(MATLABスタイル)インターフェースと呼ばれます。
# 見た目を調整する場合、オブジェクト指向のスタイルを利用し、
# 簡単なグラフを書く際にはMATLABスタイルを利用すると良いです。

・実行結果

複数描画することもできます。 その際は、boxplot()の引数にタプルなどのデータ型を渡します。

# Jupyter Notebookを利用している方のみ記述してください。
%matplotlib inline 
import matplotlib.pyplot as plt

# 数学の点数
math = [82, 75, 50, 73, 65, 95, 78, 93, 71, 83]
# 英語の点数
english = [77, 92, 62, 77, 64, 45, 28, 60, 37, 86]

# 点数のタプル
points = (math, english)
# リスト型でも問題ありません。
# points = [math, english]
# numpy.array型で問題ありません
# points = [np.array(math), np.array(english)]

# 箱ひげ図
fig, ax = plt.subplots()


bp = ax.boxplot(points) # 複数指定する場合はタプル型で渡します。
ax.set_xticklabels(['math', 'english'])

plt.title('exam')
plt.grid() # 横線ラインを入れることができます。

# 描画
plt.show()

効率よくPythonを学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。

1 COMMENT

現在コメントは受け付けておりません。