今回はsubplotを使ったシンプルな方法で作成する。
完成形のイメージはコレ。
折れ線グラフ、棒グラフ、横棒グラフ、散布図という種類の異なる4つのグラフを一度で表示してみることにする。
figureとsubplot
Matplotlibで複数のグラフを作るにはfigureとsubplotが必要になる。subplotというのは1つの1つのグラフを表示する領域のことで、figureというのはsubplotを表示する領域のこと。
つまり、複数のグラフを表示するためには、まずfigureを作り、figureの中にsubplotを並べていくことになる。
これは、figureとsubplotのイメージを図で表したもの。
大きなfigureという枠の中に4つのsubplot(グラフ)が並んでいる。
それぞれのグラフ(subplot)は、figureの中でどこに並べるかを指定する必要がある。
並べる場所の指定は、figureの中で何行目の何列目に位置すのかを指定することになる。行、列、何個目かの指定は、subplotを作成する時に(行, 列, 何個目)という形で行う。
例えば、上の図でsubplot1は2行2列の1つ目なので(2, 2, 1)となる。
同じように、subplot2は2行2列の2個目なので(2, 2, 2)、subplot3は2行2列の3個目なので(2, 2, 3)、subplot4は2行2列の4個目なので(2, 2, 4)となる。
グラフの作成
それでは実際にグラフを作成してみることにする。作成するグラフのデータには、numpyで作成するランダムな値を使う。
#matplotlibとnumpyのインポート
import matplotlib.pyplot as plt
import numpy as np
#figureの作成
fig = plt.figure()
#subplotの作成
#ax1〜ax4にsubplotを追加する
ax1 = fig.add_subplot(2, 2, 1) #1つ目のsubplot 2行2列の1つ目
ax2 = fig.add_subplot(2, 2, 2) #2つ目のsubplot 2行2列の2つ目
ax3 = fig.add_subplot(2, 2, 3) #3つ目のsubplot 2行2列の3つ目
ax4 = fig.add_subplot(2, 2, 4) #4つ目のsubplot 2行2列の4つ目
#1つ目のグラフ(折れ線グラフ)の作成
Y1 = np.random.randint(0, 100, 5) #棒グラフのデータを作成
ax1.plot(Y1) #ax1に棒グラフを指定
ax1.set_title("グラフ1")
#2つ目のグラフ(棒グラフ)の作成
X1 = range(0, 5) #横軸の値
Y2 = np.random.randint(0, 100, 5) #グラフのデータ
ax2.bar(X1, Y2) #ax2に棒グラフを指定
ax2.set_title("グラフ2")
#3つ目のグラフ(横棒グラフ)の作成
X3 = range(0, 5) #横軸の値
Y3 = np.random.randint(0, 100, 5) #グラフのデータ
ax3.barh(X3, Y3) #ax3に横棒グラフを指定
ax3.set_title("グラフ3")
#4つ目のグラフ(散布図)の作成
X4 = np.random.randint(0, 100, 50) #xの値
Y4 = np.random.randint(0, 100, 50) #yの値
ax4.scatter(X4, Y4) #ax4に散布図を指定
ax4.set_title("グラフ4")
#レイアウトの設定
plt.tight_layout()
#グラフの表示
plt.show()
このコードを実行すると完成イメージのような2行2列で4種類のグラフが作成される。
ポイントは、コードの最後の方でレイアウトの設定をしていること。
plt.tight_layout()この1行を記述しないと、2行目のグラフのタイトルが1行目のグラフと重なってしまい、見にくくなってしまうので注意が必要。
以上。
今回は、ここまで。
0 件のコメント :
コメントを投稿