Matplotlibで箱ひげ図を表示する方法を解説【Python】

Matplotlibで箱ひげ図を表示する方法を解説【Python】 データ分析

箱ひげ図をPythonで表示する方法を解説していきます。
箱ひげ図を知らない場合でも、知っておいても損はありません。

いや、これを機会に箱ひげ図ぐらいは知っておきましょう。
今は、高校数学で箱ひげ図を学ぶようなので。

「先輩(課長・部長)、箱ひげ図も知らないんっすか?」
こんな風には言われたくはありませんよね。

本記事の内容

  • 箱ひげ図とは?
  • 箱ひげ図の用途
  • 箱ひげ図をPythonで作るための環境を準備する
  • 箱ひげ図をMatplotlibで表示する

それでは、上記に沿って解説していきます。

箱ひげ図とは?

箱ひげ図は、データの分布を大雑把に把握するためのモノです。
早速ですが、箱ひげ図のグラフを確認しましょう。

上図は、数学のテストの点数を箱ひげ図で表現したモノです。
点数結果は以下。

[30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

最小値と最大値の説明は不要ですね。
中央値は、平均ではありません。

中央値は、データ数が奇数か偶数かで求め方が異なります。

奇数真ん中のデータ
偶数真ん中のデータ2つの平均

上記で示した数学のテスト結果は、14個で偶数です。
この場合、60と65が真ん中のデータ2つにあたります。

よって、中央値はその平均62.5となります。
上図においても、中央値の位置が大体合っていますね。

あとは、第1四分位と第3四分位の説明が必要です。

第1四分位は、データを小さい順に並べた時の下から25%の位置にある値のことです。
第3四分位は、データを小さい順に並べた時の下から75%の位置にある値のことです。

ここで、「あれ、第2四分位は?」となりますよね。
実は、中央値は第2四分位(50%の位置)でもあります。

以上が、箱ひげ図の説明です。
高校数学で出るぐらいなので、そこまで複雑なモノではありません。

じゃあ、この箱ひげ図はどう使うのでしょうか?
何のために箱ひげ図を利用するのでしょうか?

このことを次で説明します。

箱ひげ図の用途

箱ひげ図の用途を確認していきます。
データ分布を把握するという用途があるのは、大前提です。

次のグラフを見てください。

上図は、数学と英語のテスト結果を表した箱ひげ図です。

単体の箱ひげ図から、データの分布は確認できます。
でも、上図のように複数の箱ひげ図を並べることでそのデータ分布の度合を比較できます。

数学と英語なら、科目が違うからそれほど違和感は感じません。
しかし、これが同じ数学テストの結果ならどう感じますか?

上図は、同じ内容の数学テストを受けた結果だとします。
昨年度の入学生と今年度の入学生の結果を比較しているケースです。

昨年度は、できるできないの差が激しいと感じるはずです。
今年度は、能力に格差はないが全体的に高いと判断できます。

このような分析がすぐにできるのが、箱ひげ図の良いところです。
そこからさらに詳細を知りたいなら、数値を確認していく形になるでしょう。

以上、箱ひげ図の用途に関する解説です。
次は、この箱ひげ図を作るための準備について説明していきます。

箱ひげ図をPythonで作るための環境を準備する

箱ひげ図をPythonで作るためには、Matplotlibライブラリが必要です。
そこでMatplotlibをインストールしていきます。

最初に、現状のインストール済みパッケージを確認しておきます。

>pip list
Package    Version
---------- -------
pip        21.0.1
setuptools 53.0.0

次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip

では、Matplotlibのインストールです。
Matplotlibのインストールは、以下のコマンドとなります。

pip install matplotlib

インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package         Version
--------------- -------
cycler          0.10.0
kiwisolver      1.3.1
matplotlib      3.3.4
numpy           1.20.1
Pillow          8.1.0
pip             21.0.1
pyparsing       2.4.7
python-dateutil 2.8.1
setuptools      53.0.0
six             1.15.0

たくさんのパッケージがインストールされました。
これで、Matplotlibを用いてグラフを表示できるようになっています。

しかし、このままでは日本語をグラフ上には表示できません。
WindowsとLinuxに関しては、それぞれ日本語化対応の方法をまとめています。
日本語化対応を行う場合には、参考にしてください。

Windows

Linux(Ubuntu/Debian)

ここまで行えば、準備が整いました。
次は、実際に箱ひげ図をPythonのプログラミングで表示してみましょう。

箱ひげ図をMatplotlibで表示する

以下は、上記で出てきた「箱ひげ図の用途」グラフを作成するサンプルコードです。

import matplotlib.pyplot as plt

# 数学の点数
math = [30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

# 英語の点数
english = [60, 63, 67, 70, 72, 73, 74, 75, 76, 77, 80, 83, 87, 90]

# 点数
points = (math, english)

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

bp = ax.boxplot(points)
ax.set_xticklabels(['数学', '英語'])
plt.title('箱ひげ図の用途')
plt.ylabel('点数')
plt.ylim([0, 100])
plt.grid()

# 保存
plt.savefig("test.png")

たった、これだけのコードで箱ひげ図を作成できます。
上記のサンプルコードを実行すると、プログラムと同じフォルダ上にtest.pngが作成されます。

なお、日本語化対応していないと、日本語部分が文字化けしてしまいます。

タイトルとURLをコピーしました