静かなる名辞

pythonとプログラミングのこと

2019/03/22:TechAcademyがteratailの質問・回答を盗用していた件
2019/03/26:TechAcademy盗用事件 公式発表と深まる疑念


matplotlibで図全体にタイトルを付けるにはsuptitleを使う

はじめに

 matplotlibではよく一つの図の中に複数のグラフを描きます。そうすると全体に共通してタイトルを付けたくなるのですが、普通にやろうとしても個別のAxesに対して呼んでしまいがちです。

 図全体に対してタイトルを付けるには、suptitleを使います。

matplotlib.pyplot.suptitle — Matplotlib 3.1.0 documentation

使い方

 以下のように使います。

import numpy as np
import matplotlib.pyplot as plt

# データ生成
x = np.arange(0, 10, 0.1)
y1 = x ** 2
y2 = np.sin(x)

# figure, axesの生成
fig, axes = plt.subplots(nrows=1, ncols=2)

# 個別のAxesに対するプロットとタイトル付け
axes[0].plot(x, y1)
axes[0].set_title("y = x^2")

axes[1].plot(x, y2)
axes[1].set_title("y = sin(x)")

# figure全体のタイトル
fig.suptitle("graphs")

# 保存
plt.savefig("result.png")

result.png
result.png


 結果の図を見ればわかる通り、図の上に大きなタイトルが付いています。このように全体にタイトルを付けることができます。なお、今回はfigureのメソッドとして呼んでいますが、例のごとくpltからplt.suptitleという形でも呼べます。

 今回は行数が少ないので大丈夫でしたが、たまにタイトル同士で被ったりしてグラフが不格好になることもあります。そういうときは適宜余白を調整してください。

【python】matplotlibで図の余白を調整する - 静かなる名辞