データ分布の可視化は効果的なデータ分析の礎であり、ヒストグラムはそのための強力なツールです。分析者はしばしば、2つ以上のデータセットの分布を比較する必要があります。広く使用されているPythonのプロットライブラリであるMatplotlibは、この比較を達成するためのいくつかのエレガントな方法を提供します。この記事では、Matplotlibで複数のヒストグラムをプロットするための3つの主要な方法を、図解付きの例と説明とともに探ります。
目次
方法1:ヒストグラムを重ね合わせる
最も単純なアプローチは、ヒストグラムを同じ軸に直接重ね合わせることを含みます。これにより、形状と分布の即時の視覚的な比較が提供されます。ただし、分布が非常に似ている場合、またはデータ密度が高い場合、この方法は詳細が不明瞭になるため、効果が低くなる可能性があります。この問題を軽減するには、透明性が重要です。
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 1 # 可視化のためにシフト
# プロット
plt.hist(data1, alpha=0.5, label='Data 1', bins=30)
plt.hist(data2, alpha=0.5, label='Data 2', bins=30)
plt.xlabel('値')
plt.ylabel('頻度')
plt.title('重ね合わせたヒストグラム')
plt.legend(loc='upper right')
plt.show()
このコードはalpha
パラメータを使用して透明度を制御し、両方のヒストグラムを明確に表示できるようにします。ラベルは識別を容易にするために追加され、凡例は明確さを高めます。
方法2:並列ヒストグラム
特に類似した分布を比較する場合、明確さを向上させるために、並列ヒストグラムを強くお勧めします。Matplotlibのサブプロット機能により、これは簡単に行えます。
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ(上記と同じ)
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 1
# 並列プロット
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
axes[0].hist(data1, bins=20)
axes[0].set_title('Data 1')
axes[0].set_xlabel('値')
axes[0].set_ylabel('頻度')
axes[1].hist(data2, bins=20)
axes[1].set_title('Data 2')
axes[1].set_xlabel('値')
axes[1].set_ylabel('頻度')
plt.tight_layout()
plt.show()
このコードは、それぞれ単一のヒストグラム専用の2つのサブプロットを持つ図を作成します。plt.tight_layout()
は、サブプロット間の適切な間隔を確保します。
方法3:ヒストグラムの外観をカスタマイズする
視覚的な区別をさらに強化するには、異なる色、縁の色、線種、またはヒストグラムの種類(例:棒グラフとステップグラフ)を使用することができます。
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ(上記と同じ)
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 1
# 異なるスタイルでプロット
plt.hist(data1, bins=20, color='skyblue', edgecolor='black', label='Data 1')
plt.hist(data2, bins=20, color='coral', edgecolor='black', alpha=0.7, label='Data 2', histtype='step')
plt.xlabel('値')
plt.ylabel('頻度')
plt.title('異なるスタイルのヒストグラム')
plt.legend()
plt.show()
この例では、異なる色、縁の色、およびhisttype
パラメータを使用して、視覚的に異なるヒストグラムを作成する方法を示しています。凡例は、適切なラベル付けのために依然として重要です。
結論
Matplotlibは、データ分布の有益な視覚化を作成するための柔軟で強力なツールキットを提供します。複数のヒストグラムをプロットするための方法の選択は、データの特定の特性と比較における望ましい詳細レベルに大きく依存します。重なり合ったヒストグラムは迅速な確認に適していますが、並列およびカスタマイズされたプロットは、明確さと視覚的なインパクトを向上させます。
FAQ
- Q:ビンの数を調整するにはどうすればよいですか? A:
plt.hist()
のbins
パラメータを使用します。データの構造を最もよく明らかにするものを探して実験してください。 - Q:異なる色とラベルを使用できますか? A:もちろんです!
color
とlabel
パラメータを使用し、常にplt.legend()
を使用して凡例を含めてください。 - Q:プロットを保存するにはどうすればよいですか? A:
plt.savefig('filename.png')
(または同様の関数)を使用してプロットを保存します。'filename.png'
を希望するファイル名と拡張子に置き換えてください。 - Q:ヒストグラムが重なり合っています。どうすればよいですか? A:並列ヒストグラムを試したり、透明度(
alpha
)を高めたり、異なるhisttype
オプションを使用したり、スケールが大きく異なる場合はデータの正規化を検討してください。