matplotlib

【matplotlib】凡例タイトルの大きさを変更する【Python】

MAX

グラフの凡例にはタイトルを設定することができる。

デフォルトだとタイトルのフォントサイズはラベルと同じだが、タイトルっぽくフォントサイズを大きくすることも可能。

スポンサーリンク

データ読み込み

seabornからtitanicを読み込む。

1import numpy as np
2import pandas as pd
3
4import matplotlib.pyplot as plt
5import japanize_matplotlib
6import seaborn as sns
7
8%matplotlib inline
9
10df_titanic = sns.load_dataset("titanic")

plt.legendに何も設定しない場合、デフォルトでは凡例にタイトルは設定されない。

1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_titanic, x="sex", y="survived", hue="class")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8plt.title(f"legend_title_none")
9plt.tight_layout()
10plt.show()

凡例にタイトルを表示する

plt.legend()の引数titleを設定すると凡例のタイトルが表示される。

1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_titanic, x="sex", y="survived", hue="class")
5# レジェンドの設定
6plt.legend(title="class")
7# グラフタイトル設定
8plt.title(f"legend_title")
9plt.tight_layout()
10plt.show()

デフォルトだと凡例タイトルも凡例ラベルもフォントサイズが同じなので、タイトル感がなく、できれば凡例タイトルはタイトルっぽくするために少し大きくしたい。

凡例タイトルのフォントサイズ指定の変更

plt.legend()title_fontsizeを指定することで、凡例タイトルの大きさを変更できる。

title_fonttizeに数値を指定することで、凡例タイトルが指定したフォントサイズになる。

1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_titanic, x="sex", y="survived", hue="class")
5# レジェンドの設定
6plt.legend(title="class", title_fontsize=14)
7# グラフタイトル設定
8plt.title(f"legend_title_fontsize14")
9plt.tight_layout()
10plt.show()

現在のデフォルトフォントサイズ(大抵は10か11ぐらい)が分かっている場合、固定されている場合などは、フォントサイズを指定しても良いかもしれない。

凡例タイトルの相対的な大きさ変更

title_fontsizeに「small」「large」などの値を指定することで、デフォルトフォントサイズに対して相対的にフォントサイズが変更される。

デフォルトフォントサイズによらずに、相対的にサイズを変更可能なので、こちらの方が汎用性は高い(気がする)。

指定可能な相対的な値

指定可能な文字列と倍率は以下の通り。

指定可能な値倍率
xx-small0.579
x-small0.694
small0.833
mudium1.0
large1.200
x-large1.440
xx-large1.728

largeかx-largeぐらいがタイトルにはちょうどいい。

title_fontsize: largeの例

1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_titanic, x="sex", y="survived", hue="class")
5# 凡例の設定
6plt.legend(title="class", title_fontsize="large")
7# グラフタイトル設定
8plt.title(f"legend_title_fontsize_large")
9plt.tight_layout()
10plt.show()

title_fontsize: x-largeの例

1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_titanic, x="sex", y="survived", hue="class")
5# 凡例の設定
6plt.legend(title="class", title_fontsize="x-large")
7# グラフタイトル設定
8plt.title(f"legend_title_fontsize_x_large")
9plt.tight_layout()
10plt.show()

まとめ

フォントサイズが固定されている場合は、数値指定を。

フォントサイズを動的に変更したい(する可能性がある)場合はlargeなどの相対値指定がいい。

1# タイトル文字列14pt
2plt.legend(title="class", title_fontsize=14)
3
4# タイトル文字列120%
5plt.legend(title="class", title_fontsize="large")
6
7# タイトル文字列144%
8plt.legend(title="class", title_fontsize="x-large")
9

色々な凡例の設定

スポンサーリンク
ABOUT ME
MAX
MAX
ITエンジニア、データサイエンティスト
新卒でSIerに入社し、フリーランスになってWEB系へ転向。
その後AIの世界へ足を踏み入れ、正社員に戻る。 テーブルデータの分析がメイン。
スポンサーリンク
記事URLをコピーしました