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

subplptサムネイル
こつこつPython

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

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト