pyplot – legend~凡例

概要

pyplotの各グラフに凡例を入れるには、legend()メソッドを使う。基本の使い方は以下の通り。

  1. plotやscatterなどでグラフを描く時の引数にlabel=”…”でラベルを定義する。ここで設定した文字列が凡例に使われる。
  2. グラフフィールドのオブジェクトのlegend()メソッドを実行する。

凡例の位置

標準的な位置指定

凡例の位置はloc引数に対して定義された文字列で指定する。

位置しての文字列は’[縦位置] [横位置]’で指定。

縦位置はupper, center, lowerの何れか、横位置はleft, center, rightの何れかで、縦位置と横位置の間には半角スペースを入れる(たとえば'upper right')。ただし縦横中心の場合は'center'

デフォルトは'best'で最も適切な位置が自動で設定される。

bboxによる位置指定~凡例の外側への設置

Axes.legend()の位置指定で引数としてbbox_to_anchorを指定することで、グラフの描画領域の相対位置を細かく指定することもできる。

bbox_to_anchor=(x, y)

x, yはグラフ描画行きの左下を(0, 0)、右上を(1, 1)としたときの相対位置。ここで指定した位置とlocで指定した凡例の基準点を一致させる。

以下のコードは、全てbbox_to_anchor=(1, 1)として凡例を描画域の右上に合わせている。その上でlocで指定した凡例の位置がこの点と一致させられる。

たとえばloc="lower right"とすると凡例の左下の位置が描画域の右上と同じになるように配置される。また、標準では凡例の枠の周りに少しパディングが行われるが、borderaxespad引数で数値を指定することでその間隔を調整できる。

ただし、この例では凡例が画面の右側ではみ出て切れてしまっている。このようなときは、tightlayout()をFigureに対して実行することで描画領域に全体を収めることができる。

凡例の並べ方

凡例はデフォルトでは縦に並べられるが、ncolに整数を指定して凡例の列数を指定できる。

デザイン等

このほか、デザイン関連で以下のような引数がある

title=[文字列]
凡例内にタイトルを設定。
fancybox=False/True
Trueを指定すると凡例の枠の角が丸くなる。
shadow=False/True
Trueを指定すると凡例に影がつけられる。

凡例の文字サイズ

凡例本体の文字サイズは、legend()の引数fontsizeで指定する。

凡例のタイトルの文字サイズは、凡例オブジェクトからget_title()でタイトルオブジェクトを取得し、set_fontsize()で設定する。

この2行の手続きは、以下のようにチェインによって1行で書くこともできる。

引数handleslabels

legend(handles, labels)という指定方法。公式ドキュメントではこちらが先に示されている。

Axes.get_legend_handles_labels()の戻り値として、グラフ要素のhandleとそれに対するlabelのリストが得られる。

この方法は、後述のように複数のグラフの凡例をまとめて扱うときに利用する。

複数グラフの場合の凡例

複数のAxesのグラフの凡例を1つにまとめて表示したい場合は、それぞれのAxesでhandleとlabelを取得しておき、それらを結合してlegend()の引数とする。

上の方法だと特定のAxesに凡例が表示されるが、これをまとめたいときには、figureに凡例を表示させる。

 

コメントを残す

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