Matplotlibは、複数のサブプロットを含む図に、全体を網羅する単一のタイトルを追加するいくつかの方法を提供しています。これは可読性を高め、視覚化に重要なコンテキストを提供します。この記事では、2つの主要な方法を解説し、それらの類似点と微妙な違いを強調します。
目次
pyplot.suptitle()
の使用
pyplot.suptitle()
関数は、メインタイトルを追加する簡潔な方法を提供します。これはmatplotlib.pyplot
モジュール(通常はplt
としてインポートされます)の一部です。この方法は簡単で広く使用されています。
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# サブプロットの作成
fig, axes = plt.subplots(2, 1)
# データのプロット
axes[0].plot(x, y1)
axes[0].set_title('サブプロット1')
axes[1].plot(x, y2)
axes[1].set_title('サブプロット2')
# メインタイトルの追加
plt.suptitle('メイン図タイトル', fontsize=14)
# レイアウトの調整(重なりを防ぐために重要)
plt.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()
plt.tight_layout()
関数は不可欠です。これは、タイトルの重なりを防ぐために、サブプロットパラメータを自動的に調整します。rect
パラメータはレイアウトを微調整します。タイトルの長さとサブプロットの数に応じて、その値を調整する必要がある場合があります。
figure.suptitle()
の使用
あるいは、図オブジェクト自体からアクセスできるfigure.suptitle()
メソッドは、同等の機能を提供します。このアプローチは、オブジェクト指向プログラミングスタイルに合致します。
import matplotlib.pyplot as plt
# サンプルデータ(上記と同じ)
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# サブプロットの作成
fig, axes = plt.subplots(2, 1)
# データのプロット
axes[0].plot(x, y1)
axes[0].set_title('サブプロット1')
axes[1].plot(x, y2)
axes[1].set_title('サブプロット2')
# 図オブジェクトを使用してメインタイトルを追加
fig.suptitle('メイン図タイトル(オブジェクト指向)', fontsize=14)
# レイアウトの調整
plt.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()
このコードは前の例を反映しており、これらの2つのメソッドの相互交換可能な性質を示しています。
適切な方法の選択
どちらの方法も同一の結果を得られます。選択は多くの場合、個人の好みやコーディングスタイルに帰着します。pyplot.suptitle()
の方が簡潔ですが、figure.suptitle()
は厳密なオブジェクト指向アプローチにより適しています。プロジェクト内の一貫性が重要です。常にplt.tight_layout()
を使用するか、サブプロットパラメータを手動で調整して、クリーンで読みやすい図にすることを忘れないでください。