matplotlibでグラフに凡例を表示しよう
前回はmatplotlibのグラフにタイトルを表示しました。
今回はmatplotlibのグラフに凡例を表示してみましょう。
matplotlibのグラフに凡例を表示するには、legend()関数を使います。
legend()関数には、呼び出し方法がいくつかあります。
凡例を表示する簡単なプログラム
以下の例は、一番簡単な凡例の表示方法です。
plot()関数でlabelを設定して、legend()関数を引数なしで呼び出しています。
例
plt.plot([1, 2, 3], label='Sample Legend')
plt.legend()
簡単なプログラムを作って、凡例を表示してみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
### インポート import matplotlib.pyplot as plt ### グラフ設定 plt.plot([1, 2, 3], label='Sample Legend') ### 凡例表示 plt.legend() ### グラフ表示 plt.show() |
プログラムを実行すると、以下のように凡例が表示されます。
既存のプロット要素にラベルを付ける
plot()関数ではlabelを設定しないで、legend()関数側でlabelを設定することができます。
凡例の表示は、上記と全く同じになります。
例
plt.plot([1, 2, 3])
plt.legend(['Sample Legend'])
凡例の要素を明示的に定義する
プロットが複数ある場合、どのプロットがどの凡例を使うかを完全に制御するには、以下のように指定します。
例
line1, = plt.plot([1, 2, 3])
line2, = plt.plot([2, 4, 8])
plt.legend((line1,line2), ('Sample Legend1','Sample Legend2'))
表示例は、以下の通りです。
凡例の表示位置を指定する
凡例を表示する位置を指定することもできます。
legend()関数のlocオプションを使って直接位置を指定するパターンと、凡例にアンカーを設定して位置を指定するパターンがあります。
凡例の位置をlocオプションを使用して指定する
凡例はデフォルトで、他のアイテムに重ならないような場所に自動で表示されますが、legend()関数のlocオプションを使うと、凡例の位置を固定することができます。
plt.legend(loc=文字列 or 番号)
例
plt.legend(loc='upper left')
または
plt.legend(loc=2)
locオプションの値は、以下の通りです。
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 | 画面中央 |
凡例の位置は、以下のようになります。
凡例の位置をアンカーを使って指定する
locオプションとbbox_to_anchorオプションを組み合わせて、凡例をグラフの外に表示することもできます。
bbox_to_anchorオプションで指定する座標は、locオプションで指定したアンカーの位置を基準に、左下を(0, 0)、右上を(1,1)とします。
plt.legend(loc=文字列 or 番号, bbox_to_anchor=(X座標, Y座標))
アンカーの位置は、以下のようになります。
例えば、凡例をグラフ外の左上に表示したい場合は、以下のようになります。
凡例のアンカーの位置を左下(lower left)にして、凡例の位置をグラフの最上部(Y座標を1)にしています。
例
plt.legend(loc='lower left', bbox_to_anchor=(0, 1))
表示例は、以下の通りです。