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