Matplotlib を使ってカスタマイズ可能なボックスプロットを作成する

Beginner

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

はじめに

ボックスプロットは、データのグループを四分位数を通じてグラフ化したものです。これは、最小値、第 1 四分位数、中央値、第 3 四分位数、最大値の 5 数要約に基づいてデータの分布を示すために使用されます。このチュートリアルでは、Python の Matplotlib ライブラリを使用してボックスプロットを作成およびカスタマイズする方法を学びます。

VM のヒント

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

Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

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

ライブラリのインポートとデータの生成

必要なライブラリをインポートし、偽データを生成することから始めます。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook

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

ボックスプロットの統計量を計算する

matplotlib.cbook モジュールの boxplot_stats() 関数は、ボックスプロットに必要な統計量を計算します。データとラベルをパラメータとして渡します。

## Compute boxplot stats
stats = cbook.boxplot_stats(data, labels=labels, bootstrap=10000)

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

手順 2 で計算されたボックスプロットの統計量のいずれかを変更することができます。この例では、各セットの中央値をすべてのデータの中央値に設定し、平均を 2 倍にします。

for n in range(len(stats)):
    stats[n]['med'] = np.median(data)
    stats[n]['mean'] *= 2

基本的なボックスプロットを作成する

Matplotlib の bxp() 関数を呼び出すことで、基本的なボックスプロットを作成することができます。計算された統計量をパラメータとして渡します。

## Create a basic boxplot
plt.bxp(stats)
plt.show()

異なる要素の表示を切り替える

bxp() 関数の様々なパラメータを使用して、ボックスプロットの異なる要素の表示を切り替えることができます。この例では、平均値、ボックス、キャップ、ノッチ、および外れ値の表示を表示するか非表示にする方法を示します。

## Toggle the display of different elements
plt.bxp(stats, showmeans=True, showbox=False, showcaps=False, shownotches=True, showfliers=False)
plt.show()

異なる要素の表示をカスタマイズする

bxp() 関数の様々なパラメータを使用して、ボックスプロットの異なる要素の表示をカスタマイズすることができます。この例では、ボックス、中央値、外れ値、平均点、および平均線をどのようにカスタマイズするかを示します。

## Customize the display of different elements
boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
flierprops = dict(marker='o', markerfacecolor='green', markersize=12, linestyle='none')
medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
meanpointprops = dict(marker='D', markeredgecolor='black', markerfacecolor='firebrick')
meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')

plt.bxp(stats, boxprops=boxprops, flierprops=flierprops, medianprops=medianprops, meanprops=meanpointprops, meanline=True, showmeans=True)
plt.show()

まとめ

このチュートリアルでは、Python の Matplotlib ライブラリを使ってボックスプロットを作成し、カスタマイズする方法を学びました。また、異なる要素の表示を切り替え、その表示をカスタマイズする方法も学びました。ボックスプロットは、データの分布を視覚化し、外れ値を特定するための便利なツールです。