タイトルの通り、seabornを使っててプロットサイズを変更したくなった時のためのメモ。
やり方を把握するのに少し戸惑ったので、誰かの役に立てばと思いここにまとめておく。
そういえばQiita初投稿!
自分の環境はこちら:
Windows10
Python 3.6.6
matplotlib 2.2.3
seaborn 0.9.0
以下では、おなじみのやり方でimportしていることにする。
import matplotlib.pyplot as plt
import seaborn as sns
seabornでプロットのサイズを変えるには
最初にまとめておくと、どのplot関数を使うかによって大きく2種類の方法があるみたい。
一つ目の方法
ググってみるとmatplotlibを使った下のどれかでできるって説明が多いし、これでだいたい上手くいく。
# その1
plt.figure(figsize=(20, 10))
sns.scatterplot(...) # scatterplotを例に
# その2
plt.rcParams["figure.figsize"] = (20, 10)
sns.scatterplot(...)
# その3
fig, ax = plt.subplots(figsize=(20, 10))
sns.scatterplot(..., ax=ax)
ただし、seabornのplot関数によっては上の方法が効かない。例えばsns.lmplotなどがそのような例。
というわけでもう一つのやり方。
二つ目の方法
sns.lmplotのサイズ変えられないんだけど!って思いながら検索しているとよい回答があった。
ここの回答にあるようにpairplot、relplot、catplot、lmplot、PairGrid、FacetGridについては次のようにサイズを指定する必要があるらしい。
# その1
sns.lmplot(..., height=10, aspect=2)
# heightで高さを指定して、aspectで縦横の比を指定する
# sns.pairplotなど複数の図がプロットされるやつでは、heightは一つの図の高さ
# 上の回答によると、seabornのバージョン<=0.8.1ならheightじゃなくてsizeらしい
# (バージョンが0.8.1以下の時は自分では試していません)
# その2
g = sns.lmplot(...)
g.fig.set_figheight(10)
g.fig.set_figwidth(20)
なんでこんな風に分かれてるのかは、公式ドキュメントとか実装を眺めれば掴めそうだったけどもういいやーってなったので考えるのをやめた。
まとめ
- 使いたいplot関数によっては、matplotlibを使うのではなくてseaborn側からいじる