【matplotlib】複数のグラフを一括表示:subplot[Python]

  • URLをコピーしました!
目次

違う方法で複数のグラフを一括表示

前回はsubplotsというコマンドを用いて、複数のグラフを一括に表示する方法を解説しました。

今回は違うコマンドを使って、複数のグラフを一括で表示してみたいと思います。

そのコマンドとは「subplot」です。

何か間違えてるんじゃないかと思われるかもしれませんが大丈夫です。

とりあえず前回同様、まずは2つのグラフを縦に並べてみましょう。

subplotを使って縦に二つグラフを並べてみる

subplotを使う際には、まずはいつも通りグラフを書く宣言をします。

fig = plt.figure()

次に 「plt.subplot(V,H,N)」とすることでグラフの分割の仕方と場所を指定します。

Vは縦方向のグラフの個数、Hは横方向のグラフの個数、Nは何番目のグラフかという指定になります。

今回は縦2つ、横1つとして2つのグラフを並べてみます。

plt.subplot(2,1,N)

データはいつも通りまずはこのx、y1、y2のセットを使いましょう。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y2 = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

ということでプログラム全体を書いてみるとこんな感じです。

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y2 = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

fig = plt.figure()

plt.subplot(2,1,1)
plt.plot(x, y1)

plt.subplot(2,1,2)
plt.plot(x, y2)

plt.show()

グラフ表示のところを解説していくと、まず一つ目のグラフをこちらのコードで表示します。

plt.subplot(2,1,1)
plt.plot(x, y1)

「plt.subplot(2,1,1)」というコマンドで、縦に2つ、横に1つというようにグラフを表示する場所を分割し、最後の「1」で1番目の場所を指定しています。

二つ目のグラフを表示するコードはこちらです。

plt.subplot(2,1,2)
plt.plot(x, y2)

「plt.subplot(2,1,2)」というコマンドで、グラフ表示する場所を縦に2つ、横に1つと分割した後、2番目に表示すると指定しています。

このプログラムを実行するとこんなグラフが得られます。

このことから番号は上のグラフが「1」、下のグラフが「2」であることが分かります。

subplotを使って横に二つグラフを並べてみる

次にグラフを横に2つ並べてみましょう。

先ほど縦に並べた際に使ったsubplotがこちらですが、

plt.subplot(2,1,N)

横に並べる時にはこうなります。

plt.subplot(1,2,N)

ということでプログラム全体を書いてみましょう。

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y2 = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

fig = plt.figure()

plt.subplot(1,2,1)
plt.plot(x, y1)

plt.subplot(1,2,2)
plt.plot(x, y2)

plt.show()

実行結果

横に並べることができました。

ということは横に並べた際には、左のグラフが「1」番、右のグラフが「2」番となるようです。

subplotを使って縦横に2つずつのグラフを並べてみる

次はお待ちかねグラフを縦横2つずつ並べてみましょう。

データは前回同様、このセットを用います。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y2 = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
y3 = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
y4 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

今回は縦横2つずつなので、subplotの書き方はこうなります。

plt.subplot(2,2,N)

ではプログラム全体を書いてみましょう。

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y2 = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
y3 = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
y4 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

fig = plt.figure()

plt.subplot(2,2,1)
plt.plot(x, y1)

plt.subplot(2,2,2)
plt.plot(x, y2)

plt.subplot(2,2,3)
plt.plot(x, y3)

plt.subplot(2,2,4)
plt.plot(x, y4)

plt.show()

実行結果

このグラフの配置から、グラフの位置と番号の関係性を確認してみましょう。

「1」は左上、「2」は右上、「3」は左下、「4」は右下です。

つまり左上を「1」として、数字が増えるにつれて右方向にグラフが配置され、いっぱいになると次の段でまた左から右に行くにつれて数字が増えるということになります。

つまりこんな感じで順番になっているということです。

前回はsubplotsを解説して、今回はsubuplotを解説しました。

プログラムの書き方やグラフの位置の指定が少しずつ異なりますが、自分の書きやすい方を使えばいいのではないかなと思います。

次回は2軸グラフの時、もしくは複数のグラフを一括表示する時に、XやYの表示する範囲を指定する方法を解説していきます。

ということで今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次