ボックスプロットのカスタマイズ

PythonPythonBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Matplotlib でボックスプロットをカスタマイズする方法を学びます。ボックスプロットは、データセットの分布を視覚化する一般的な方法です。ボックスアンドウィスカープロットとも呼ばれ、データの中央値、四分位数、および外れ値を示します。Matplotlib を使ってボックスプロットをカスタマイズする方法を学ぶため、いくつかの例を通して説明します。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

必要なライブラリである Matplotlib と NumPy をインポートして始めましょう。また、結果を再現可能にするために、NumPy の乱数シードを設定します。

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)

データを生成する

例で使用するために、いくつかのランダムなデータを生成します。NumPy の関数 random.lognormal() を使って、平均が 1.5、標準偏差が 1.75 の対数正規分布のデータを生成します。4 つの変数の 37 個のサンプルを生成し、data 変数に格納します。また、各変数に対するラベルのリストも作成します。

data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')

デフォルトのボックスプロット

まずは、データを視覚化するためのデフォルトのボックスプロットを作成します。Matplotlib の関数 boxplot() を使って、データとラベルを引数として渡します。また、set_title() 関数を使ってプロットのタイトルを設定します。

fig, ax = plt.subplots()
ax.boxplot(data, labels=labels)
ax.set_title('Default Box Plot')
plt.show()

個々のコンポーネントを削除する

boxplot() 関数に用意されているさまざまなキーワード引数を使って、ボックスプロットの個々のコンポーネントを削除することができます。たとえば、showmeans を False に設定することで平均値を削除できます。また、showboxshowcaps をそれぞれ False に設定することで、ボックスとひげを削除できます。

fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 8), sharey=True)
axs[0, 0].boxplot(data, labels=labels)
axs[0, 0].set_title('Default')

axs[0, 1].boxplot(data, labels=labels, showmeans=False)
axs[0, 1].set_title('No Means')

axs[1, 0].boxplot(data, labels=labels, showbox=False, showcaps=False)
axs[1, 0].set_title('No Box or Whiskers')

axs[1, 1].boxplot(data, labels=labels, showfliers=False)
axs[1, 1].set_title('No Outliers')

plt.show()

ボックスプロットのスタイルをカスタマイズする

boxplot() 関数に用意されているさまざまなキーワード引数を使って、ボックスプロットのスタイルをカスタマイズすることもできます。たとえば、boxprops を設定することでボックスの色と線のスタイルを変更できます。また、それぞれ medianpropsmeanpropsmeanlineprops を設定することで、中央値、平均値、平均値の線のスタイルを変更できます。

fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 8), sharey=True)
axs[0, 0].boxplot(data, labels=labels)
axs[0, 0].set_title('Default')

boxprops = dict(linestyle='--', linewidth=2, color='red')
axs[0, 1].boxplot(data, labels=labels, boxprops=boxprops)
axs[0, 1].set_title('Custom Box')

medianprops = dict(linestyle='-', linewidth=2, color='blue')
meanprops = dict(marker='D', markeredgecolor='black', markerfacecolor='green')
meanlineprops = dict(linestyle='--', linewidth=2, color='red')
axs[1, 0].boxplot(data, labels=labels, medianprops=medianprops, meanprops=meanprops, meanline=True, meanlineprops=meanlineprops)
axs[1, 0].set_title('Custom Median, Mean, and Mean Line')

flierprops = dict(marker='o', markerfacecolor='red', markersize=8, markeredgecolor='none')
axs[1, 1].boxplot(data, labels=labels, flierprops=flierprops)
axs[1, 1].set_title('Custom Outliers')

plt.show()

まとめ

ボックスプロットは、データセットの分布を視覚化する優れた方法です。Matplotlib は、ボックスプロットに対して個々のコンポーネントの削除やコンポーネントのスタイルのカスタマイズなど、多くのカスタマイズオプションを提供しています。これらのオプションを使うことで、伝えたい情報を効果的にコミュニケートするボックスプロットを作成することができます。