【matplotlib】凡例の余白を少なくする【Python】
MAX
MAX999blog
グラフの凡例にはタイトルを設定することができる。
デフォルトだとタイトルのフォントサイズはラベルと同じだが、タイトルっぽくフォントサイズを大きくすることも可能。
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-small | 0.579 |
x-small | 0.694 |
small | 0.833 |
mudium | 1.0 |
large | 1.200 |
x-large | 1.440 |
xx-large | 1.728 |
largeか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="large")
7# グラフタイトル設定
8plt.title(f"legend_title_fontsize_large")
9plt.tight_layout()
10plt.show()
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