(最終更新月: 2024年11月)
✔こんな方におすすめの記事です
「箱ひげ図って何だろう?Pythonで描けないかな」
「Matplotlibで箱ひげ図を描きたいけど、方法がわからない」
「箱ひげ図の見方や使い方を知りたい」
✔当記事を通じて得られること
- 箱ひげ図の基本的な概念と見方
- Matplotlibを使った箱ひげ図の描き方
- 実践的な箱ひげ図のカスタマイズ方法
当記事では、箱ひげ図の基礎知識からMatplotlibでの描画方法まで、実例を交えて幅広く解説していきます。
ぜひ最後までご覧ください。
箱ひげ図とは?データ分析の強い味方
箱ひげ図は、データの分布を視覚的に表現する統計的なグラフです。
データ分析において、数値の散らばり具合を理解するのに非常に役立つ手法なのです。
- 箱ひげ図の基本構造
- 箱ひげ図で表現できる統計値
- 箱ひげ図を使うメリット
箱ひげ図の基本構造
箱ひげ図は、データの中央値、四分位数、外れ値などを一目で把握できる図です。
箱の中央にある線が中央値を表し、箱の上端と下端がそれぞれ第3四分位数と第1四分位数を示します。
例えば、100人分の身長データがあった場合、以下のような情報が一目でわかります。
import numpy as np
import matplotlib.pyplot as plt
# サンプルデータの生成
heights = np.random.normal(170, 5, 100) # 平均170cm、標準偏差5の正規分布データ
# 箱ひげ図の描画
plt.boxplot(heights)
plt.ylabel('身長 (cm)')
plt.show()
箱ひげ図で表現できる統計値
箱ひげ図には、5つの重要な統計値が表示されます。
これらの値を理解することで、データの分布状況を詳しく把握できるようになります。
主な統計値は以下の通りです。
- 最小値(ひげの下端)
- 第1四分位数(箱の下端)
- 中央値(箱の中の線)
- 第3四分位数(箱の上端)
- 最大値(ひげの上端)
箱ひげ図を使うメリット
箱ひげ図は、データの特徴を簡潔に表現できる優れたグラフです。
特に複数のデータセットを比較する際に威力を発揮します。
以下のような場面で効果的に活用できます。
- データの分布の把握
- 外れ値の検出
- 複数グループの比較
Matplotlibを使った箱ひげ図の基本的な描き方
Matplotlibを使えば、簡単に箱ひげ図を描くことができます。
ここでは、基本的な描画方法について説明していきましょう。
- シンプルな箱ひげ図の描き方
- データの準備方法
- 基本的なカスタマイズ
シンプルな箱ひげ図の描き方
Matplotlibでの箱ひげ図は、boxplotメソッドを使用して描画します。
最も基本的な使い方は、以下のようになります。
import matplotlib.pyplot as plt
import numpy as np
# データの準備
data = np.random.randn(100)
# 箱ひげ図の描画
plt.boxplot(data)
plt.show()
データの準備方法
箱ひげ図を描くためには、適切なデータ形式が必要です。
Matplotlibは、様々な形式のデータを受け付けることができます。
一般的なデータ形式は以下の通りです。
# リストを使用する場合
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# NumPy配列を使用する場合
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Pandasのデータフレームを使用する場合
import pandas as pd
df = pd.DataFrame({'values': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]})
基本的なカスタマイズ
箱ひげ図の見た目は、様々なパラメータで調整できます。
基本的なカスタマイズオプションを使って、グラフをより見やすくしましょう。
以下は主なカスタマイズ例です。
plt.boxplot(data,
notch=True, # ノッチを表示
vert=True, # 縦向きに表示
patch_artist=True, # 箱を塗りつぶす
boxprops={'color': 'black', 'facecolor': 'lightblue'}, # 箱の色設定
whiskerprops={'color': 'black'}, # ひげの色設定
medianprops={'color': 'red'} # 中央値線の色設定
)
複数の箱ひげ図を並べて比較する方法
複数のデータセットを比較することで、より深い分析が可能になります。
Matplotlibでは、複数の箱ひげ図を簡単に並べて表示できます。
- 複数データの準備
- グラフの配置方法
- ラベルの付け方
複数データの準備
複数の箱ひげ図を描くには、データを適切に構造化する必要があります。
一般的には、リストやNumPy配列を使用します。
以下は、3つのグループのデータを準備する例です。
# 3つのグループのデータを生成
group1 = np.random.normal(100, 10, 100)
group2 = np.random.normal(120, 15, 100)
group3 = np.random.normal(90, 12, 100)
# データをリストにまとめる
data = [group1, group2, group3]
グラフの配置方法
複数の箱ひげ図を配置する際は、位置やスペースを適切に調整する必要があります。
Matplotlibでは、これらを簡単に設定できます。
以下のコードで、見やすい配置が実現できます。
# グラフのサイズを設定
plt.figure(figsize=(10, 6))
# 箱ひげ図を描画
plt.boxplot(data,
positions=[1, 2, 3], # 各箱の位置
widths=0.7, # 箱の幅
patch_artist=True # 箱を塗りつぶす
)
# グラフの範囲を設定
plt.xlim(0.5, 3.5)
ラベルの付け方
各箱ひげ図にラベルを付けることで、データの識別が容易になります。
ラベルは、x軸、y軸、タイトルなど、様々な場所に追加できます。
以下は、ラベルを追加する基本的な方法です。
plt.boxplot(data,
labels=['Group A', 'Group B', 'Group C'] # 各箱のラベル
)
plt.xlabel('グループ')
plt.ylabel('値')
plt.title('グループ別の箱ひげ図比較')
箱ひげ図のスタイリングとカスタマイズ
見やすく美しい箱ひげ図を作るには、適切なスタイリングが重要です。
Matplotlibは、豊富なカスタマイズオプションを提供しています。
- 色とスタイルの設定
- グリッドと背景の調整
- 凡例の追加
色とスタイルの設定
箱ひげ図の各要素に色やスタイルを設定することで、視認性が向上します。
特に、複数の箱ひげ図を比較する際は、色の使い分けが効果的です。
以下のコードで、カラフルな箱ひげ図が作成できます。
colors = ['lightblue', 'lightgreen', 'lightpink']
boxes = plt.boxplot(data, patch_artist=True)
# 各箱に色を設定
for box, color in zip(boxes['boxes'], colors):
box.set_facecolor(color)
box.set_edgecolor('black')
# ひげ、キャップ、外れ値の色を設定
plt.setp(boxes['whiskers'], color='black')
plt.setp(boxes['caps'], color='black')
plt.setp(boxes['medians'], color='red')
plt.setp(boxes['fliers'], marker='o', markerfacecolor='gray')
グリッドと背景の調整
グリッドや背景の設定は、データの読み取りやすさに大きく影響します。
適切な設定により、プロフェッショナルな印象のグラフが作成できます。
以下のコードで、見やすいグラフデザインが実現できます。
# グリッドの設定
plt.grid(True, axis='y', linestyle='--', alpha=0.7)
# 背景色の設定
plt.gca().set_facecolor('#f8f8f8')
# 枠線の設定
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
凡例の追加
複数の箱ひげ図を表示する際は、凡例があると理解が深まります。
Matplotlibでは、カスタマイズ可能な凡例を追加できます。
以下は、凡例を追加する基本的な方法です。
# 凡例用のダミープロットを作成
import matplotlib.patches as mpatches
legend_elements = [mpatches.Patch(facecolor=color, label=f'Group {i+1}')
for i, color in enumerate(colors)]
# 凡例を追加
plt.legend(handles=legend_elements, loc='upper right')
箱ひげ図の実践的な活用例
箱ひげ図は、様々なデータ分析シーンで活用できます。
実際のデータを使って、具体的な活用方法を見ていきましょう。
- 学習データの分析
- 売上データの可視化
- 比較分析の実践
学習データの分析
テストスコアなどの学習データは、箱ひげ図で効果的に分析できます。
クラス間や科目間の比較が簡単にできるのが特徴です。
以下は、3つのクラスのテストスコアを比較する例です。
# テストスコアのデータを生成
class_a = np.random.normal(75, 10, 30)
class_b = np.random.normal(80, 8, 30)
class_c = np.random.normal(70, 12, 30)
plt.figure(figsize=(10, 6))
plt.boxplot([class_a, class_b, class_c],
labels=['Class A', 'Class B', 'Class C'])
plt.ylabel('Test Score')
plt.title('Class Comparison of Test Scores')
売上データの可視化
月次や季節ごとの売上データも、箱ひげ図で効果的に表現できます。
外れ値や傾向を把握しやすいのが特徴です。
以下は、四半期ごとの売上を比較する例です。
# 四半期ごとの売上データを生成
q1_sales = np.random.normal(1000, 200, 90)
q2_sales = np.random.normal(1200, 250, 90)
q3_sales = np.random.normal(1500, 300, 90)
q4_sales = np.random.normal(1800, 350, 90)
plt.figure(figsize=(12, 6))
plt.boxplot([q1_sales, q2_sales, q3_sales, q4_sales],
labels=['Q1', 'Q2', 'Q3', 'Q4'])
plt.ylabel('Sales (K¥)')
plt.title('Quarterly Sales Distribution')
比較分析の実践
異なるグループや条件間の比較分析も、箱ひげ図で効果的に行えます。
統計的な差異を視覚的に確認できるのが利点です。
以下は、異なる処理方法の効果を比較する例です。
# 処理効果のデータを生成
method1 = np.random.normal(85, 5, 50)
method2 = np.random.normal(90, 4, 50)
method3 = np.random.normal(88, 6, 50)
plt.figure(figsize=(10, 6))
plt.boxplot([method1, method2, method3],
labels=['Method 1', 'Method 2', 'Method 3'],
notch=True)
plt.ylabel('Effectiveness (%)')
plt.title('Comparison of Processing Methods')
まとめ
当記事では、Matplotlibを使用した箱ひげ図について学習してきました。
- 箱ひげ図の基本的な概念と統計的な意味
- Matplotlibを使った効果的な箱ひげ図の描画方法
- 実践的なカスタマイズと活用例
箱ひげ図は、データ分析の強力なツールとして活用できます。
まずは、自分の持っているデータで箱ひげ図を描いてみましょう。
実践を重ねることで、より深い分析が可能になっていくはずです。