Data Visualization

Matplotlib完全マスター:第2 Y軸ラベルの追加とカスタマイズ

Spread the love

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がスケーリングを処理します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です