グラフの見た目を整える上で「凡例(legend)」は、各データ系列が何を表しているかを伝える役割を持っています。本記事では、Matplotlibにおける凡例の位置の設定方法について、基本的な使い方から応用まで詳しく解説します。
基本的な凡例の位置設定
Matplotlibでは、legend()
関数の引数を変更することで、凡例の位置を細かく制御することができます。
まずは、簡単な例から見ていきましょう。以下のコードは、基本的な線グラフに凡例を追加する例です。
import matplotlib.pyplot as plt
import numpy as np
# データの作成
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# グラフの描画
plt.plot(x, y1, label="sin(x)")
plt.plot(x, y2, label="cos(x)")
# 凡例の表示 (デフォルトの位置)
plt.legend()
# グラフを表示
plt.show()

この例では、label
引数を用いて各プロットに名前を付け、plt.legend()
で自動的に最適な位置に凡例が配置されます。デフォルトでは凡例は「best」に配置され、Matplotlib が最適な位置を自動で決定します。しかし、場合によってはデータと重なってしまうことがあります。
loc
パラメータで凡例の位置を指定
Matplotlibでは、legend()
関数にloc
という引数を指定することで、凡例の位置を簡単に変更できます。loc
には文字列または数値で位置を指定できます。
loc 番号 | 位置 | 文字列指定 |
---|---|---|
0 | 自動調整 (best) | “best” |
1 | 右上 | “upper right” |
2 | 左上 | “upper left” |
3 | 左下 | “lower left” |
4 | 右下 | “lower right” |
5 | 右 | “right” |
6 | 中央左 | “center left” |
7 | 中央右 | “center right” |
8 | 下 | “lower center” |
9 | 上 | “upper center” |
10 | 中央 | “center” |
例: 右上に凡例を配置
plt.legend(loc="upper right")

bbox_to_anchor
で凡例を自由に配置
loc
パラメータで基本的な位置は指定できますが、さらに細かい位置調整が必要な場合はbbox_to_anchor
を併用します。この引数は凡例の位置を図全体に対する座標で指定でき、タイトなレイアウトの調整や、グラフ外に凡例を配置する場合に便利です。
以下は、凡例をグラフの外側に配置する例です。
plt.legend(loc="upper left", bbox_to_anchor=(1, 1))

ここで、bbox_to_anchor=(1, 1)
は凡例の左上隅"upper left"
を図の右上(1, 1)
に合わせる設定です。これにより、グラフ内のスペースを確保しつつ、凡例を見やすい位置に配置することができます。

その他のオプション
Matplotlibの凡例には、位置以外にも以下のようなオプションがあります:
fontsize
:凡例内の文字サイズを指定frameon
:凡例の枠線の表示/非表示shadow
:凡例に影を付けるncol
:凡例の列数を指定
これらのオプションを組み合わせることで、より見やすくカスタマイズされたグラフを作成することが可能です。
次は、凡例の枠や透明度をカスタマイズする例です。
plt.legend(loc="upper right", frameon=False, fontsize=12)


まとめ
loc
で基本的な位置を設定できる。bbox_to_anchor
を使えば、凡例の位置を自由に調整可能。frameon
やfontsize
でデザインも変更可能。
Matplotlibでの凡例の位置調整は、loc
パラメータやbbox_to_anchor
を使うことで柔軟に行えます。基本的な位置指定から、グラフ外への配置まで対応できます。グラフに合わせて最適な凡例の位置を選んでみてください。
- 凡例のマーカーサイズとフォントサイズの調整方法 [matplotlib]
- 凡例を枠外に配置する2つの方法 [matplotlib]
- 凡例の枠スタイルを高度にカスタマイズする方法。線種・色。[matplotlib]
- matplotlib の凡例を消す4つの方法、あるいは表示されないときのトラブルシュート。
- 凡例の枠を消す・透明にする・スタイルを変更する方法 [matplotlib]
- matplotlibで日本語が豆腐に文字化けしないようにする2つの方法