【matplotlib】複数のグラフを一括表示:subplotでのタイトルの表示(suptitle、title)[Python]

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

グラフ一括表示の際のタイトルの表示

前回はsubplotsでグラフを一括表示した際にタイトルを表示する方法を解説しました。

今回はsubplotを使った際のタイトルの表示方法を解説していきます。

前回はsubplotsで4つのデータを2つずつ、縦に2つ並んだグラフにプロットしたデータを用いました。

今回も基本となるグラフは同様に4つのデータを2つずつ、縦に2つ並んだグラフとして、subplotを使ってプロットしてみましょう。

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,1,1)
plt.plot(x, y1)
plt.plot(x, y2)

plt.subplot(2,1,2)
plt.plot(x, y3)
plt.plot(x, y4)

plt.show()

実行結果

ということでこのプログラムをもとにタイトルを追加していきます。

また前回解説した通り、タイトルとしてはグラフ全体のタイトルとそれぞれのグラフのタイトルと2種類あります。

まずはグラフ全体のタイトルを表示させてみましょう。

グラフ全体のタイトルの表示

前回、subplotsを使った際、グラフ全体のタイトルを表示する際には「suptitle(“タイトル”)」を用いました。

subplotでもこのコマンドが使えるのでしょうか?

とりあえず試してみましょう。

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,1,1)
plt.plot(x, y1)
plt.plot(x, y2)

plt.subplot(2,1,2)
plt.plot(x, y3)
plt.plot(x, y4)

plt.suptitle("Title", fontsize=20)

plt.show()

実行結果

普通に表示することができました。

グラフ全体のタイトルを表示するには、subplotsを使っても、subplotを使っても「suptitle(“タイトル”)」でいいということが分かりました。

それぞれのグラフのタイトルを表示

ではそれぞれのグラフのタイトルを表示してみましょう。

subplotを使った際のタイトルの表示の仕方は、実はX軸、Y軸の表示範囲を指定したのと同じ考えでできます。

つまり通常のタイトルを表示するコマンド「title(“タイトル”)」を使うのですが、そのコマンドを追加する場所が重要。

タイトルを追加したいグラフの直下に書く必要があります。

つまりこんな感じ。

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,1,1)
plt.plot(x, y1)
plt.plot(x, y2)
plt.title("title1")

plt.subplot(2,1,2)
plt.plot(x, y3)
plt.plot(x, y4)
plt.title("title2")

plt.suptitle("Title", fontsize=20)

plt.show()

実行結果

表示できましたが、やっぱり他の箇所とかぶってしまっています。

前回、subplotsでのタイトル表示を解説した際、「subplots_adjust」で調整できるということを紹介しました。

subplotでも「subplots_adjust」で調整できるか試してみましょう。

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,1,1)
plt.plot(x, y1)
plt.plot(x, y2)
plt.title("title1")

plt.subplot(2,1,2)
plt.plot(x, y3)
plt.plot(x, y4)
plt.title("title2")

plt.suptitle("Title", fontsize=20)

plt.subplots_adjust(top=0.85, hspace=0.5)

plt.show()

実行結果

かぶらない様に調整できました。

ではそれぞれのグラフのタイトルのフォントサイズを変更してみましょう。

fontsize=Xをそれぞれのタイトルのコマンドに追加することで変更できます。

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,1,1)
plt.plot(x, y1)
plt.plot(x, y2)
plt.title("title1", fontsize=20)

plt.subplot(2,1,2)
plt.plot(x, y3)
plt.plot(x, y4)
plt.title("title2", fontsize=20)

plt.suptitle("Title", fontsize=20)

plt.subplots_adjust(top=0.85, hspace=0.5)

plt.show()

実行結果

フォントサイズを変更できました。

今回はsubplotを使った際のタイトル表示の方法を解説してきました。

タイトルが入るとグッとグラフらしくなりますが、気になるのが軸名がまだ記載されていないこと。

ということで次回はsubplots、subplotでの軸名の表示方法を解説したいと思います。

ではでは今回はこんな感じで。

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

コメント

コメントする

目次