2013年2月19日火曜日

Matplotlibの凡例設定

昔やったはずなのに忘れていたからメモ。
物忘れが激しくて困る。

import matplotlib.pyplot as plt
plt.legend(loc='best', fancybox=True, shadow=True, ...)
要はmatplotlib.pyplot.legend()関数内で色々設定する。決まった定型文のようなものをコンマで区切って入れていく。
以下、自分が使いそうな関連をまとめておく。

凡例の位置:

基本的には
 loc='~'
と言った感じで作成。本家のページを探したらこんなのがあった。数字を入れてもいいし、loc='best'
のように書いてもいい。
Location StringLocation Code
‘best’0
‘upper right’1
‘upper left’2
‘lower left’3
‘lower right’4
‘right’5
‘center left’6
‘center right’7
‘lower center’8
‘upper center’9
‘center’10
更にbbox_to_anchor=(0.5,0.5)と書くと凡例の位置が指定した箇所からずれる。
どんな風にずれるかはプロットしながら調整すれば良いと思う。

凡例の表示方法:

numpoints=? :
 凡例に表示する点の数を指定する。デフォルトでは2になっているが、点同士を結ばない場合、2つ点が並んで違和感がでるのでよく使うとおもう。
ncol=?:
 凡例の列数。デフォルトでは1。たまに使いたくなる。
mode=“expand”:
 凡例をグラフの横いっぱいに広げるらしい。一度使ったことがある
 fancybox=True:
 凡例の角を丸くする。最初は違和感があったが、なんとなく見映えがいいような気がする
shadow=True:
 凡例に影をつける。これも違和感があったが、かっこいい気がしてきた。
title='~'
 凡例のタイトルを指定する

凡例を半透明にする

関数内でalpha=?としたらエラーが出た。この構文はpyplot.plotやpyplot.xlabelなどに対応しているがpyplot.legend関数には対応していないらしい。
そこで、今のところ、凡例を半透明にするには次のように書いている。
他に方法がないのかはそのうち調べるかも(たぶんしない)
leg = plt.legend('''色々指定する''')
leg.get_frame().set_alpha(0.5)

0 件のコメント:

コメントを投稿