BETA

Matplotlibの凡例を外側に表示したい人へ

投稿日:2020-01-17
最終更新:2020-01-20

Matplotlibの凡例を外側に出したい人用に色々な例を書いておきます。

次のような凡例の位置をいじらずに表示した状態からいじっていきます。

data = np.random.rand(10, 3)  
labels = ["a", "b", "c"]  

plt.plot(range(10), data, marker="o", linewidth=3)  
plt.legend(labels)  
plt.title("title")  
plt.ylabel("y label")  
plt.xlabel("x label")  
plt.show()  

右上に表示

凡例の枠の上部をグラフの枠の上部にあわせて、右上に表示するときは以下のようにします。

plt.legend(labels, loc='upper left', bbox_to_anchor=(1, 1))  

右中央に表示

凡例の上下の位置をグラフと揃えて、右に表示するときは以下のようにします。

plt.legend(labels, loc='center left', bbox_to_anchor=(1., .5))  

上に表示

凡例の左右の位置をグラフと揃えて、上に表示するときは以下のようにします。
ncol=3とすることで横一列に3つ分のグラフの凡例を表示できます。

plt.legend(labels, loc='lower center', bbox_to_anchor=(.5, 1.1), ncol=3)  

下に表示

凡例の左右の位置をグラフと揃えて、下に表示するときは以下のようにします。

plt.legend(labels, loc='upper center', bbox_to_anchor=(.5, -.15), ncol=3)  

理屈

plt.legendの引数のlocに指定した凡例の箇所がbbox_to_anchorで指定した座標になるように位置が調整されます。ここで、座標はグラフの枠の左下が(0,0)で右上が(1,1)となります。

例1
loc='upper left'、bbox_to_anchor=(1, 1)であるときには、凡例の枠の左上(locがupper leftなので)が(1,1)になるように凡例が配置されます。

例2
loc='lower center'、bbox_to_anchor=(0.5, 1.1)であるときには、凡例の枠の中央下(locがlower centerなので)が(0.5,1.1)になるように凡例が配置されます。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@opqrstuvcutの技術とか技術以外のブログ 最近フリーランスになりました

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう