【こつこつPython】Pythonでfigureオブジェクトを作成して複数グラフを表示する方法|matplotlib.pyplot.subplots

subplotsサムネイル
こつこつPython

Pythonで複数のグラフを表示する方法です。
使用するのはPythonのmatplotlibライブラリのsubplots関数です。

import matplotlib.pyplot as plt

subplots関数はグラフをを表示するためのFigureオブジェクトとAxesオブジェクトを作成します。
1つのFigureオブジェクトに分割した数のAxesオブジェクトが入り、そのAxesオブジェクトに表示したいグラフを描画するイメージで作成していきます。

それでは、このようなデータを使用して、グラフを作成してみましょう。

x1 = [1, 2, 3, 4, 5]
y1 = [1, 5, 2, 4, 3]
x2 = [1, 2, 3, 4, 5]
y2 = [5, 1, 4, 2, 3]

まず、縦と横に2つずつ、合計4つのグラフを表示してみましょう。
最初に、subplots関数を使用してFigureオブジェクトとAxesオブジェクトを作成します。
引数に横に分割する数と縦に分割する数を指定します。
subplots関数はFigureオブジェクトとAxesオブジェクトを返すので、それぞれ変数figとaxに代入します。
実行します。

fig, ax = plt.subplots(2, 2)

それぞれ中身を確認してみましょう。

fig
ax

変数figには空白のグラフが4つ入ったFigureオブジェクトが代入され、変数axには4つのAxesオブジェクトが代入されていることが確認できました。

そして、変数axを2行2列の2次元配列と考え、インデックスを指定して、axのメソッドでグラフを作成すれば複数のグラフを表示できます。
上の2つに折れ線グラフを、下の2つに棒グラフを表示させてみましょう。
実行します。

fig, ax = plt.subplots(2, 2)
ax[0][0].plot(x1, y1)
ax[0][1].plot(x2, y2)
ax[1][0].bar(x1, y1)
ax[1][1].bar(x2, y2)
plt.show()

4つのグラフを表示できました。

なお、subplots関数は明示的にFigureオブジェクトを生成しているので、グラフ全体のタイトルなど、Figureオブジェクトのメソッドも使用できます。
確認してみましょう。
Figureオブジェクトのタイトルはsuptitleメソッドで作成できます。
実行します。

fig, ax = plt.subplots(2, 2)
fig.suptitle("title")
fig.tight_layout()
ax[0][0].plot(x1, y1)
ax[0][0].set_title("subtitle1")
ax[0][1].plot(x2, y2)
ax[0][1].set_title("subtitle2")
ax[1][0].bar(x1, y1)
ax[1][0].set_title("subtitle3")
ax[1][1].bar(x2, y2)
ax[1][1].set_title("subtitle4")
plt.show()

グラフ全体のタイトルも表示できました。

関連メソッド

【こつこつPython】Pythonで複数グラフを表示する方法|matplotlib.pyplot.subplot

【こつこつPython】PythonでFigureオブジェクトに複数グラフを表示する方法|Figure.add_subplot

【こつこつPython】PythonでFigureオブジェクトを作成する方法|matplotlib.pyplot.figure

【こつこつPython】PythonでAxesオブジェクト(グラフ)を作成する方法|matplotlib.pyplot.axes