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

add_subplotサムネイル
こつこつPython

Pythonで複数のグラフを表示する方法です。
使用するのはPythonのmatplotlibライブラリのadd_subplotメソッドです。

import matplotlib.pyplot as plt

add_subplotメソッドはFigureオブジェクトが持つメソッドです。
このメソッドを使うことで、Figureオブジェクトから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つのグラフを左右に並べて表示させてみましょう。
最初に、figure関数を使用してFigureオブジェクトを作成します。
次にFigureオブジェクトのadd_subplotメソッドを使用して、Axesオブジェクトを作成します。
引数に横に分割する数、縦に分割する数、グラフのインデックスを指定します。
グラフのインデックスは左上を1として、右下方向に順に振られます。
今回は2つのグラフを作成するので、それぞれ変数ax1、ax2に代入します。
実行します。

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
plt.show()

Figureオブジェクトの中に、2つのAxesオブジェクトを作成できました。

この2つのAxesオブジェクトの中に、plotメソッドを使用して、それぞれ折れ線グラフを作成してみましょう。
実行します。

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(x1, y1)
ax2 = fig.add_subplot(1, 2, 2)
ax2.plot(x2, y2)
plt.show()

2つの折れ線グラフを左右に並べて表示できました。

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

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

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

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

fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax1.plot(x1, y1)
ax2 = fig.add_subplot(2, 2, 2)
ax2.plot(x2, y2)
ax3 = fig.add_subplot(2, 2, (3,4))
ax3.bar(x1, y1)
plt.tight_layout()
plt.show()

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

subplot関数、subplots関数、add_subplotメソッドは、いずれも複数のグラフを表示できます。
好みに合わせて、使う関数やメソッドを選びましょう。

関連メソッド

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

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

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

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

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

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

キノクエスト