プログラミング原人の進化ログ

プログラミング原人の進化論

オレ プログラミング ベンキョウ スル。マナンダ コト カク。

【Python】suptitleでグラフ全体と個別のグラフに別々にタイトルを与える

matplotlibで1つのfigureに複数のグラフを配置する時に、個別のグラフのタイトルだけでなく全体のタイトルをつけることができたら便利だなと思ったのでやり方をメモしておきます。

タイトルの付け方

全体のタイトルを設定するにはplt.suptitle('タイトル')を使います。

f:id:programgenjin:20190605174917p:plain

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(10, 5))

x = np.linspace(0, 2 * np.pi, 100)

ax0 = axes[0]
ax0.plot(x, np.sin(x))
ax0.set_title('sin')

ax1 = axes[1]
ax1.plot(x, np.cos(x))
ax1.set_title('cos')

# 全体のタイトル
plt.suptitle('sine and cosine')

plt.show()

タイトル位置の調整

グラフによっては、suptitleで設定した全体のタイトルがグラフのタイトルと重なってしまう場合があります。
そういう時はsuptitleの引数yによって調整します。

例えばタイトルの高さを1.05としたいときは

plt.suptitle('タイトル', y=1.05)

yの値はデフォルトで0.98らしいです。
y=1でグラフ全体の高さ?

参考

グラフの配置 - Python Project

matplotlib.pyplot.suptitle — Matplotlib 3.1.0 documentation