Python
matplotlib

matplotlib の legend(凡例) の 位置を調整する legend bbox_to_anchor loc

凡例を表示するplt.legendには3つのパラメータがあります.
- bbox_to_anchor
- loc
- borderaxespad

bbox_to_anchorでは, 凡例の枠の, 図全体に対する相対的な位置を決定します。 図全体の左下を(0, 0), 右上を(1, 1)としたタプルで与えます。この位置のことをアンカーと呼ぶことにします。

locでは、アンカー(bbox_to_anchorで指定した位置)に, 凡例の枠のどの部分を合わせるかを決定します。loc='upper left'ではアンカーに枠の左上を合わせ、loc='center'では中心を合わせるなどの設定ができます。

borderaxespadでは、アンカーと、locで指定した枠の部分の間の距離を設定することができます。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.arange(0, 10, 0.1)
s = np.sin(x)
c = np.cos(x)
plt.plot(x, s, "r", label="sin")
plt.plot(x, c, "k", label="cos")

アンカーを右上にして、凡例枠の右上をアンカーに合わせる。余白をあけない。

plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=0, fontsize=18)

download.png

アンカーを右上にして、凡例枠の右上をアンカーに合わせる。余白をあける。

plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=1, fontsize=18)

download-2.png

アンカーを右下にして、凡例枠の右下をアンカーに合わせる。余白をあける。

plt.legend(bbox_to_anchor=(1, 0), loc='lower right', borderaxespad=1, fontsize=18)

download-3.png

アンカーを外の左下にして、凡例枠の左上をアンカーに合わせる。

plt.legend(bbox_to_anchor=(0, -0.1), loc='upper left', borderaxespad=0, fontsize=18)

download-4.png

アンカーを外の右上にして、凡例枠の左上をアンカーに合わせる。

plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0, fontsize=18)

download-5.png

locの候補

‘best’
‘upper right’
‘upper left’
‘lower left’
‘lower right’
‘right’
‘center left’
‘center right’
‘lower center’
‘upper center’
‘center’