Matplotlibは、視覚化を作成するための強力なPythonライブラリです。主y軸のラベル付けは簡単ですが、副y軸にラベルを追加するには少し異なるアプローチが必要です。この記事では、基本事項と高度なカスタマイズ技術を網羅して、そのプロセスを説明します。
目次
MatplotlibにおけるY軸の理解
Matplotlibのプロットは通常、従属変数を表す単一のy軸を持っています。しかし、スケールが大きく異なるデータセットを比較する場合、主y軸と副y軸を使用すると可読性が向上します。各軸は、ラベル、目盛りなどを個別にカスタマイズできます。
副Y軸ラベルの追加
Matplotlibのtwinx()
関数は、同じx軸を共有する副y軸を作成します。ラベルは、この新しいaxesオブジェクトでset_ylabel()
メソッドを使用して設定します。
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [10, 20, 15, 25, 30]
# Figureとaxesの作成
fig, ax1 = plt.subplots()
# 最初のデータセットのプロット
ax1.plot(x, y1, color='blue', label='データセット1')
ax1.set_xlabel('X軸')
ax1.set_ylabel('Y1軸ラベル', color='blue')
ax1.tick_params('y', labelcolor='blue')
ax1.legend(loc='upper left')
# 副y軸の作成
ax2 = ax1.twinx()
# 2番目のデータセットのプロット
ax2.plot(x, y2, color='red', label='データセット2')
ax2.set_ylabel('Y2軸ラベル', color='red') # 副y軸のラベル
ax2.tick_params('y', labelcolor='red')
ax2.legend(loc='upper right')
plt.title('副Y軸付きプロット')
plt.show()
Y軸ラベルのカスタマイズ
ラベルの外観をカスタマイズできます。
- フォントサイズ:
ax2.set_ylabel('ラベル', fontsize=14)
- フォントファミリー:
ax2.set_ylabel('ラベル', fontfamily='serif')
- 回転:
ax2.set_ylabel('ラベル', rotation=270)
- LaTeXフォーマット:
ax2.set_ylabel(r'$Delta$ラベル')
Pandas DataFrameの使用
Pandasを使用する場合、プロセスは同様です。
import pandas as pd
import matplotlib.pyplot as plt
data = {'x': [1, 2, 3, 4, 5], 'y1': [2, 4, 1, 3, 5], 'y2': [10, 20, 15, 25, 30]}
df = pd.DataFrame(data)
fig, ax1 = plt.subplots()
df.plot(x='x', y='y1', ax=ax1, color='blue', label='データセット1')
ax1.set_ylabel('Y1軸ラベル', color='blue')
ax1.legend(loc='upper left')
ax2 = ax1.twinx()
df.plot(x='x', y='y2', ax=ax2, color='red', label='データセット2')
ax2.set_ylabel('Y2軸ラベル', color='red')
ax2.legend(loc='upper right')
plt.show()
結論
Matplotlibで副y軸ラベルを追加およびカスタマイズすると、データ視覚化の明確性が向上します。twinx()
とset_ylabel()
は、情報豊かで視覚的に魅力的なプロットを作成するための重要なツールです。
FAQ
- Q: 複数の副y軸? A: はい、可能ですが、軸が多すぎると可読性が低下する可能性があります。
- Q: 範囲の調整? A:
ax2.set_ylim(ymin, ymax)
を使用します。 - Q: 異なるスケール? A: 副y軸はそのためにあるので、Matplotlibがスケーリングを処理します。