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 | 各種パラメータを再設定するためのメソッド |
【スポンサーリンク】