こんにちは,米国データサイエンティストのかめ(@usdatascientist)です.
データサイエンスのためのPython入門第27回です(講座の目次はこちら).今回でSeaborn最後です(ありがとうよSeaborn・・・)..
(「データサイエンスのためのPython講座」動画版がでました!詳細はこちら)
本講座もそろそろ終わりに近いです!30前には終わると思ってましたが,この感じだと無理そうですネ
今日はSeabornの装飾について触れていきます.matplotlibでも第23回で装飾について話をしました.っぽくいうと’Style’ですね.
今回はSeaborn版について解説していこうと思います.どれくらい重要かというと・・・んーそんなに頻繁には使わないと思います.
デフォルトですでに綺麗だし,そんなにこだわる時も多くないと思うので!
必要になったら都度ググって思い出したり,このページに来てください.
目次
sns.set()で基本Style変更
Seabornの最初の回(第24回)にでてきましたね.今回はこの sns.set() のパラメータを紹介していきます.
色々引数はありますか,大きく3つ
- context
- style
- palette
の引数を紹介します.
- context引数で用途を指定
context引数には’paper’, ‘notebook’, ‘talk’, ‘poster’の4つの値をとります.それぞれ試してみてください.基本は’notebook’でいいと思いますが,文字を大きくしたかったら’poster’や’talk’を使うといいです.今回もタイタニックデータを使います.(タイタニックデータについては第11回参照)
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd import seaborn as sns %matplotlib inline df = pd.read_csv('train.csv') sns.set(context='poster') df = df.dropna(subset=['Age']) sns.distplot(df['Age']) |
文字がでかくなります.ちなみに,このsns.set()やset_xxx()は一つ一つのグラフに対してセットするのではなく,一つのnotebook全体に影響します.全体魔法です.
例えばposter用,プレゼン用にグラフを描画する際はこのcontext引数を指定して実行すると,それ用に最適化されたグラフが描画されるのでめちゃくちゃ便利ですよ!
- style引数でグラフ全体のstyleを指定
同様にShift+Tabでリファレンスを確認すると・・・
‘darkgrid’, ‘whitegride’, ‘dark’, ‘white’, ‘ticks’の5つを選べるようです.
デフォルトは’darkgrid’で,先の例はそれですね.こちらは好みなものを使えばいいと思います.色々試してみてください(雑w)
(ticksについては後ほど少し触れます)
- palette引数で色を指定
色のパレットを指定します.前回の記事で紹介したcmapに指定していたものですね.公式ページに色々例があるのでご確認ください.
1 2 |
sns.set(palette='bright') sns.violinplot(x='Pclass', y='Age', data=df) |
sns.despine()で軸や枠を落とす
先の例でstyle=’ticks’とするとplotに軸と枠ができますが, sns.despine() をコールして落とすことができます.
sns.despine() のリファレンスをみるとtop, right, left, bottomをbooleanで指定できます.それぞれにTrue, Falseを入れることで非表示&表示を切り替えられます.
デフォルトだとtop, rightがTrueになっていて落ちています.
topとrightに線があると見た目ダサい気がするので,ticksを指定する時は sns.despine() を呼んでおくと無難かもしれません.
matplotlibと同様pltモジュールで色々なことができる.
Seabornは内部でmatplotlibを使っているので,基本的にmatplotlibでやっていたようなことがSeabornでも同じようにできます.
例えばサイズ変更.第22回で紹介したように,Seabornでも plt.figure(figsize=(w, h)) でサイズを変更することができます.(第22回ではsubplotsクラスを使っていますが,今回はシンプルにfigureクラスを使います.この辺りは第21回を参照ください.)
1 2 3 |
import matplotlib.pyplot as plt plt.figure(figsize=(10, 5)) sns.distplot(df['Age']) |
他にも,plt.savefig()で保存が可能です.(第22回ではオブジェクト指向での保存方法でしたが,plt.savefig(‘パス/ファイル名’)で同様にpngファイルの保存が可能です.)
1 2 |
sns.distplot(df['Age']) plt.savefig('seaborn_sample.png') |
保存されていることを確認してください.
まとめ
今回はSeabornでのグラフの装飾について触れました.
- 基本はsns.set()にcontext, style, palette引数を指定する.
- sns.set_context(), sns.set_style(), sns.set_palette()のように個別に指定してもOK
- Seabornは内部でmatplotlibを使っているので,基本matplotlibと同様にpltモジュールを使って色々な操作が可能
私はあまりSeabornの装飾をどうこういじることはしません.
私が働くチームで,資料の綺麗さとかデザインに対して細かく言われることはまずありません.
グラフも,基本的には比較対象とその結果がみて分かればOKです.(実はこれが意外にできてない人が多い)
Seabornはあくまでもツールです.「見せたいもの」「伝えたい事」が一目でわかるグラフを作るのはSeabornではなくデータサイエンティストです.Seabornを使えばそれを簡単に実現できる一方,簡単に(見た目はかっこいいが)わかりにくくビジーな図も作れます.
色々なケースでグラフを作っていって,自分なりのスタイルを作れると楽だと思います.是非楽しんでやってみてください!
それでは!
次回はOpenCVというライブラリで画像を扱ってみます.