>クリックはこちら

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

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

import matplotlib.pyplot as plt

subplot関数はグラフを表示するための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つのグラフを左右に並べて表示させてみましょう。
最初に、subplot関数を使用してAxesオブジェクトを作成します。
引数に横に分割する数、縦に分割する数、グラフのインデックスを指定します。
グラフのインデックスは左上を1として、右下方向に順に振られます。
その後、plot関数で折れ線グラフを作成します。
2つ目のグラフも同様に、subplot関数を使用してAxesオブジェクトを作成し、グラフを作成しましょう。
その際、グラフのインデックスは2を指定します。
実行します。

plt.subplot(1, 2, 1)
plt.plot(x1, y1)
plt.subplot(1, 2, 2)
plt.plot(x2, y2)
plt.show()

2つのグラフを横に並べて表示できました。

また、引数にタイトルや軸ラベルも指定できます。
更に、tight_layout関数を使用すると、軸ラベルが重なることなく表示できます。
実行します。

plt.subplot(1, 2, 1, title="data1", xlabel="x-1", ylabel="y-1")
plt.plot(x1, y1)
plt.subplot(1, 2, 2, title="data2", xlabel="x-2", ylabel="y-2")
plt.plot(x2, y2)
plt.tight_layout()
plt.show()

タイトルや軸ラベルも追加できました。

さらに、第三引数のグラフのインデックスをタプルで指定することで、複数の領域にまたがるグラフも作成できます。
先ほどのグラフのエリアを4分割にし、下に棒グラフを表示させてみましょう。
2かける2の4分割にするので、第一引数、第二引数は共に2を指定します。
実行します。

plt.subplot(2, 2, 1)
plt.plot(x1, y1)
plt.subplot(2, 2, 2)
plt.plot(x2, y2)
plt.subplot(2, 2, (3, 4))
plt.bar(x1, y1)
plt.tight_layout()
plt.show()

グラフを縦と横に並べて表示できました。

このように、subplot関数は明示的にFigureオブジェクトを生成することなく、複数のグラフを表示できます。

関連メソッド

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

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

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

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