Python Code Notes

Information by python engineer

【matplotlib】凡例を設定する方法【Python】

凡例表示

matplotlibでグラフを作成する際、苦労することが多い凡例の表示位置設定方法を整理しました。

グラフをPythonの標準GUIツールであるTkinter内に表示させる例となっており、matplotlibとnumpyがインストールされていれば利用できます。matplotlibのグラフをTkinter内に表示させる方法については、こちらをご覧ください。


【スポンサーリンク】


凡例の表示方法

Axesオブジェクトに対して、legendメソッドを実行することで凡例を表示させることができます。

ax.legend()

実行するとグラフの線種・マーカーとラベルが表示された凡例が出現し、表示位置を指定しない場合はグラフとの重なりが最も少ない位置に自動調整されます。legendメソッド実行時には様々な凡例に関するパラメータを設定可能です。また、生成されるlegendオブジェクトを用いて、後から表示設定を変更することも可能です。

[↑ 目次へ]


【スポンサーリンク】


凡例の表示位置設定方法

legendメソッド実行時にlocパラメータを設定することで、凡例の表示位置を設定することができます。初期値はbestとなっており、グラフとの重なりが最も少ない位置に自動配置されます。

以下、グラフの左上に凡例を表示させる例となります。

ax.legend(loc="upper left")

legendオブジェクト生成後に位置設定したい場合は、set_locメソッドが使用可能です。

legend = ax.legend()
legend.set_loc("upper left")

またはsetメソッドでパラメータを再設定することも可能です。

legend = ax.legend()
legend.set(loc="upper left")

設定できるlocパラメータは以下の通りです。指定の文字列または数字コードを使用することが可能です。

文字列 数字コード
best 0
upper right 1
upper left 2
lower left 3
lower right 4
right 5
center left 6
center right 7
lower center 8
upper center 9
center 10

[↑ 目次へ]


【スポンサーリンク】


グラフ領域の外側に凡例を表示させる場合

bbox_to_anchorを設定することで、グラフ領域の外側に凡例を表示させることが可能です。

bbox_to_anchorは凡例ボックスの固定位置(座標)を設定するためのパラメータです。グラフ領域の中央部が(0,0)で、右上が(1,1)、左下が(-1,-1)となります。この座標に対して、凡例ボックスのlocパラメータで設定した位置が固定されることになります。

locパラメータはグラフ領域内の凡例表示位置設定しかできませんでしたが、bbox_to_anchorでグラフ領域の座標(1以上の座標)を設定することで、グラフ領域の外側に凡例を表示させることが可能となります。

legend = ax.legend(bbox_to_anchor=(1,1))

以下の例ではbbox_to_anchorを(1, 1)、locを"Upper Left"に設定しています。凡例ボックスの左上がグラフ領域の右上端に固定されることになります。

グラフ領域外に凡例を表示

[↑ 目次へ]


【スポンサーリンク】


凡例表示位置設定ウィンドウ

凡例の位置設定方法の具体例として、凡例の表示/非表示切り替え、固定位置指定、ドラッグ移動可否設定を行うための別ウィンドウを作成しました。

matplotlib legend setting example

実行するとグラフ画面とは別に凡例位置を設定するためのウィンドウが現れ、選択した内容に応じてグラフ画面が更新されて凡例の設定が変化します。

25行目の self.fig = legend.parent.get_figure() で、legendオブジェクトの親オブジェクト(Axesオブジェクト)を取得し、さらにget_figureメソッドを用いてFigureオブジェクトを取得しています。ここで取得したFigureオブジェクトに対して、64行目でself.fig.canvas.draw()を実行して画面の更新を行っています。

凡例位置設定ウィンドウ

[↑ 目次へ]


【スポンサーリンク】


オプション一覧

使用頻度の高いlegendオブジェクトのメソッド、パラメータを以下に示します。

オプション 説明
loc 凡例の固定位置の設定。デフォルトでbest
bbox_to_anchor 凡例を固定するグラフ領域上の座標の設定。(1,1)でグラフ領域右上(外側)。グラフ領域外に凡例を表示される際に便利。
ncols 凡例の列設定。デフォルトで1。
draggable 凡例のドラッグ移動可否設定。デフォルトでFalse。Trueにすると凡例のドラッグ移動が可能となる。
.set 各種パラメータを再設定するためのメソッド

[↑ 目次へ]


【スポンサーリンク】