【Python】Matplotlibで複数のグラフを一枚の画像で表示

環境

  • Jupyter Notebook 5.7.1
  • matplotlib 2.2.2

導入

複数のグラフを一枚の図に入れて編集の手間を省こうと思った。

コード

# グラフ設定
x = []
title = ["hoge1", "hoge2", "hoge3", "hoge4", "hoge5", "population size"]

for i in range(int(iteration / 100)):
    a = 99
    x.append(a+(i*100))

rows_count = 3 # 行
columns_count = 2 # 列
graphs_count = rows_count * columns_count # グラフの数
axes = []
fig = plt.figure(figsize=(18,18))

for i in range(graphs_count):
    axes.append(fig.add_subplot(rows_count, columns_count, i+1)) # i番目追加
    plt.title(title[i])
    for j in range(num):
        axes[i].plot(x, summarize[j][i], label='Population' + str(j+1))
        plt.xlabel("Generations")
        plt.grid(True)

fig.subplots_adjust(wspace=0.1, hspace=0.2) # グラフ間の隙間調整
plt.show()              # グラフを表示

(参考:Matplotlibで複数のグラフを並べて描く方法)

6つグラフを表示し、1~5はhogeXで6つ目はPopulationである。

summarize配列は2次元配列で、iは集団、jは各パラメータの中央値が入っている。これをy軸に取っている。

100世代ごとの目盛をxに入れてある。これだけ見るとnp.arangeでいいじゃないかって思うかもしれないが、実際そうである。numpyを使うならば

print(np.arange(99,1000,100,dtype = 'int'))

となる。

グラフの間隔はいろいろ試したが、このようなタイトル、軸ラベルの配置だとこの間隔がちょうどいい感じである。

出力結果

このように一枚の画像に6つのグラフが表示される。

Jupyter notebookは右クリックから普通に画像を保存できる。

レジェンドもつけようと思ったが、どうやらこのmatplotlibの複数のグラフの色は変数iによって一意的にきまっているようである。同じ色なら同じ集団のプロットである。つけなくていいや(よくない)。

こうしてみると何か大きなことをやった感があるが全然モデルがうまくいっていない。

何も進捗が出ていないのである。

つらい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です