【Python】Matplotlibで図タイトルを下に表示させる方法

論文

こんにちは!

皆さんはMatplotlibで図タイトルを下に表示させたいと思ったことはありませんか?

論文等では、表タイトルは上に、図タイトルは下につけると大学などで習った方も多いと思います。

自分もMatplotlibで作成したグラフをプレゼンで使用した際に、タイトルが上についていることを指摘されたことがあります。

そこで今回は、Matplotlibで図タイトルを下に表示させる方法について紹介していきます。


1. 使用する関数

Matplotlibでは、図タイトルをつけるために「title()」が用意されています。

しかし、残念ながらこの関数では、デフォルトでタイトルを図の上の真ん中に表示させ、さらに右か左か真ん中かしか指定できず、図の下に表示させることはできないみたいです。

このグラフのように図タイトルは上に表示されます。

そこで、今回用いるのは「text()」です。
この関数は、Matplotlibので作成されるグラフの様々なところに文字列を表示させる関数です。


text()を用いることで図の下にタイトルとして文字を表示させることができます。



2. 図タイトルを下に表示させる方法

では早速、図タイトルを下に表示させてみましょう。

図タイトルを下に表示させるには、Matplotlibのオブジェクト指向の考え方を使用します。

なぜオブジェクト指向の考え方を使用するかを簡単に説明すると、Matplotlibでは、図形の関係が以下の図のようになっていて、グラフ(ax)の下にタイトルを表示させるには、figにタイトルを表示させる必要があるからです。

これはオブジェクト指向の考え方を使用しないとできません。

オブジェクト指向の考え方は、よくグラフを並べて出力する際に用いられるので、以下の記事を参考にしてみてください。

では、プログラムを見てみましょう。

以下のプログラムは図タイトルを下に表示させるプログラムです。

import matplotlib.pyplot as plt

label = ["a", "b", "c", "d", "e"]
x, y = range(0, 5), [9, 6, 7, 8, 4]
fig = plt.figure()

ax = fig.add_subplot(111)
ax.bar(x, y, tick_label=label)
ax.set_xlabel("x")
ax.set_ylabel("y")
fig.subplots_adjust(bottom=0.15)

title = 'figure1:bar'
fig.text(0.40, 0.02, title, fontsize=18)

plt.show()

実行結果

うまく図タイトルのように下に表示されていますね!

fig.subplots_adjust(bottom=0.15)
と記述することで、グラフの下にスペースができるようになります。
図タイトルのフォントサイズ等に合わせて余白を調整しましょう。

fig.text(0.40, 0.02, title, fontsize=18)
最初の2つの引数は順にx軸の座標、y軸の座標を示しています。

軸の座標の範囲はどちらも0~1の範囲となっていて、
figの左下が(0, 0)、figの右下が(1, 0)、左上が(0, 1)となっています。

また、軸の座標の指定は、タイトルの文字の先頭の座標を指定するため、タイトルの長さで位置が変わって見えてしまうため、自分で数度実行してみてちょうど真ん中あたりにタイトルの中心が来るように調整しましょう。


3. まとめ

いかがでしたか?
Matplotlibで図タイトルを下に表示させる方法について理解できたでしょうか?

title()では図タイトルを下に表示させることができないので、text()を使用して図タイトルを下に表示させました。

論文等の図の下に図タイトルを表示させないといけない時に上記の方法を使用してみましょう!


コメントを残す

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