Matplotlib でひとつの図に複数のグラフを描く方法
ここでは、下図のように、ひとつの図の中に複数のグラフを描く基本的な方法を説明します。
グラフを描画するために matplotlib を使います。基本的な使い方については「Matplotlib で基本的なグラフを描く方法」をみてください。
さっそく、上のグラフを表示するコードを示します。
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = [1, 2, 4, 3, 5, 10]
y2 = [3, 2, 5, 10, 4, 8]
fig, axs = plt.subplots(2)
fig.suptitle('Hello!')
plt.subplots_adjust(hspace=.5)
# First chart
axs[0].plot(x, y1)
axs[0].set(xlabel='x (1)', ylabel='y1', title='chart 1')
axs[0].grid()
# Second chart
axs[1].plot(x, y2)
axs[1].set(xlabel='x (2)', ylabel='y2', title='chart 2')
axs[1].grid()
plt.show()
1行目で matplotlib.pyplot を plt という名前で取り込みます。
3行目から5行目は、グラフの x 座標と y 座標をでたらめに作ってます。座標は配列で表しています。二つのグラフの x 座標は共通として、ひとつ目のグラフの y 座標を配列 y1で、 二つ目のグラフの y 座標を配列 y2 とします。
7行目で plt.subplots(2) 関数を呼び出しています。引数の 2 は、グラフを上下2行に二つ作成することを指定しています。
もし、二つのグラフを横に並べたいなら、1行2列でグラフを作るため、plt.subplots(1, 2) とします。
plt.subplots() の戻り値は、ひとつめは Figureオブジェクトの fig。これは図全体を表しています。 二つ目の戻り値は Axesオブジェクトです。ここでは二つのグラフ (プロット) を作成したので、Axesオブジェクトの配列が返ります。Axesオブジェクトは図の中のプロットひとつひとつを表しています。
8行目では、suptitle()で図のタイトルを設定しています。
9行目は、上下のプロットの間隔を設定しています。hspaceというパラメータは、プロット間の縦の間隔を、プロットの平均高さに対する割合で指定します。
12行目からひとつ目のグラフの設定をしています。これは、「Matplotlib で基本的なグラフを描く方法」でみたのと同様です。 ただし、ここでは、7行目で二つの Axesオブジェクトを、配列の形で取得しているために、ひとつめの Axesオブジェクトにアクセスするためにインデックス 0 を指定して、axs[0]としています。
同様に17行目からは、二つ目のグラフの設定をするために、二つ目のAxesオブジェクトであるaxs[1]に対して、グラフの設定を行なっています。
最後に21行目では plt.show()を呼び出すことで、グラフのウィンドウを表示しています。
以上、ここでは matplotlib で、ひとつの図の中に複数のグラフを表示する、基本的な方法について説明しました。