以下では、matplotlib の凡例(legend)における フォントサイズやマーカーサイズの調整方法を中心に解説します。サンプルコードとともに、よく使われるオプションを取り上げます。
凡例の表示と基本的なオプション
matplotlib で凡例を表示する場合、通常は plt.plot()
や plt.scatter()
等で引数 label
を指定し、最後に plt.legend()
を呼び出します。次のようなサンプルコードを例に見てみましょう。
import matplotlib.pyplot as plt
# データ作成例
x = [1, 2, 3, 4]
y1 = [10, 8, 6, 4]
y2 = [2, 4, 6, 8]
# 線グラフ(マーカー付き)
plt.plot(x, y1, marker='o', label='Data 1')
plt.plot(x, y2, marker='x', label='Data 2')
# 凡例を表示
plt.legend()
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('凡例のマーカーサイズとフォントサイズ')
plt.show()
このコードでは、label
引数を設定した2つのグラフが描かれ、plt.legend()
によって凡例が表示されます。

凡例のフォントサイズを変更する
凡例の文字(ラベル)の大きさを変更したい場合は、plt.legend()
に fontsize
(または prop={'size': ...}
)を指定します。以下の例では、凡例のフォントサイズを 14pt に指定しています。
plt.legend(fontsize=14)
あるいは、次のように書くこともできます。
plt.legend(prop={'size': 14})

凡例のマーカーサイズを変更する
凡例に表示されるマーカーの大きさは、オプション markerscale
で設定できます。markerscale
は 「グラフ上のマーカーサイズに対して何倍にするか」 を指定するものです。
markerscale
の使用例
plt.legend(markerscale=2, fontsize=14)

上記の例では、グラフ上のマーカーサイズの 2 倍の大きさで凡例に表示されます。なお、散布図(plt.scatter()
)などでは、プロット時に s
パラメータでマーカーの面積を指定している場合があるので、実際の表示との関係に注意してください。
その他の凡例調整オプション
matplotlib の凡例には、以下のようなさまざまなパラメータが用意されています。これらを適宜組み合わせることで、レイアウトや見た目を詳細に調整できます。
loc
凡例の表示位置を指定します。例:loc='upper left'
、loc='lower right'
、loc='center'
など。title
凡例にタイトルを付与します。plt.legend(title='凡例', markerscale=2, fontsize=14)
ncol
凡例の列数を指定し、複数のラベルがある場合に横並びで表示することができます。plt.legend(ncol=2)
frameon
凡例の枠線の表示/非表示を切り替えます。plt.legend(frameon=False)
- その他のパラメータ
handlelength
: 凡例内の線の長さを指定。handletextpad
: 凡例のマーカーとテキスト間のパディングを指定。borderpad
: 凡例内のコンテンツと枠線との間の余白。labelspacing
: 各ラベル間の垂直方向の間隔。columnspacing
: 複数列の場合の列間の間隔。borderaxespad
: 凡例とプロットエリアとの間の余白。
以下のコードは複数のオプションを組み合わせた例です。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [10, 8, 6, 4]
y2 = [2, 4, 6, 8]
plt.plot(x, y1, marker='o', label='Data 1')
plt.plot(x, y2, marker='x', label='Data 2')
plt.legend(
loc='upper right', # 表示位置
fontsize=12, # フォントサイズ
markerscale=2, # マーカーサイズの倍率
title='凡例', # 凡例タイトル
ncol=1, # 列数
frameon=True, # 枠線の表示
handlelength=2, # 線の長さ
handletextpad=0.5, # マーカーとテキストの間隔
labelspacing=0.5, # 各ラベル間の間隔
borderpad=0.4, # 凡例内の余白
columnspacing=1.0 # 複数列の場合の列間間隔
)
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('詳細な凡例設定例')
plt.show()

legend オブジェクトを使った後からの調整
plt.legend()
は Legend オブジェクトを返すので、返り値を利用してさらに細かく調整することも可能です。たとえば、凡例の枠線の色や背景色の変更、透明度の設定などが挙げられます。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [10, 8, 6, 4]
plt.plot(x, y, marker='o', label='Data')
# 凡例オブジェクトを取得
legend = plt.legend(fontsize=12, markerscale=2, title='凡例')
# 凡例の枠線を取得して設定変更
frame = legend.get_frame()
frame.set_edgecolor('black')
frame.set_linewidth(1.5)
# 背景色や透明度も変更可能
frame.set_facecolor('#f0f0f0')
frame.set_alpha(0.8)
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('Legend オブジェクトでのカスタマイズ')
plt.show()

まとめ
- 凡例の基本設定:
plt.legend()
を用いて各プロットに設定したlabel
を元に凡例を作成。 - フォントサイズ:
fontsize
またはprop={'size': ...}
を使用してテキストサイズを変更。 - マーカーサイズ:
markerscale
を利用して、グラフ上のマーカーに対する倍率で凡例内のマーカーサイズを調整。 - その他のオプション:
loc
、title
、ncol
、frameon
以外にも、handlelength
やhandletextpad
、borderpad
など多彩なパラメータが利用可能。 - Legend オブジェクトでの調整:
plt.legend()
の返り値を活用して、枠線や背景色、透明度などを後から設定可能。
各パラメータは公式ドキュメントにも詳しく記載されていますので、さらに細かい設定や最新情報についてはそちらも確認するとよいでしょう。