🌊
【Python】データ可視化に使えるseabornまとめ
使用するライブラリ
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
データはすべて long-form の pd.DataFrame
とする。
(おまけ) よく使う設定
sns.set_style('whitegrid') # darkgrid, whitegrid, dark, white
sns.set_context('talk') # paper < notebook < talk < poster
sns.set_palette('Set2')
パレットはこの中から選ぶことが多い。私は Set2
が好き。
グラフ選択チートシート
公式のチュートリアルにある下の図をもとに説明する。
上の3つが figure-level 関数で、その下にぶら下がっているのが axes-level 関数。
levels | descriptions |
---|---|
figure-level | - FacetGrid を返す- row, col を指定することで、簡単にsubplotが作れる - kind でグラフのタイプを指定する。 |
axes-level | - Axes を返す- ax を指定することで、subplotに1つずつ割り当てられて自由度が高い |
relplot
数量×数量 の2変数の関連
-
scatter
散布図 -
line
折れ線グラフ- 誤差範囲は、デフォルトではブートストラップ法による95%信用区間を表す。データが多いと時間がかかるため、不要であれば
ci=None
を指定して削除できる。[1]
- 誤差範囲は、デフォルトではブートストラップ法による95%信用区間を表す。データが多いと時間がかかるため、不要であれば
Excelのグラフとの比較
上2つは、どちらもExcelの散布図に相当。
Excelの折れ線グラフは、x軸がカテゴリ変数として扱われるため、x軸の数値が等間隔でなくてもグラフ上では等間隔に表示される。
lineplot
の場合はx軸も数量変数として扱われるため、これはExcelの場合の散布図で直線を表示した場合と似た挙動になる。
displot
数量変数のばらつき
relplot
は2変数の値でグラフ上の各点の位置が決定される。
一方、displot
は値ごとの出現回数を数えてプロットする。
-
hist
ヒストグラム / (2変数) ヒートマップみたいな形式 -
kde
カーネル密度推定グラフ / (2変数) 等高線 [2] -
ecdf
累積分布関数グラフ [3] -
rug
軸上の周辺分布。トゲみたいなやつ。- 単独では使わず、上3つと併用すること。
- figure-level の場合、
rug=True
を指定すると追加で表示可能。
catplot
カテゴリ変数
カテゴリ変数と言っているが、実態は上2つ以外が詰め込まれているように見える。
カテゴリ×数量 の2変数の関連
-
strip
散布図みたいなグラフ-
jitter=True
を指定することで、重なる点をランダムにずらしてくれる (デフォルトでTrue)
-
-
swarm
散布図みたいなグラフ- 重なる点を対称にずらしてくれる。
箱ひげ図
数量変数に対して使用する。
別の軸にカテゴリ変数を指定するとグループ化できる。hue に別の変数を指定すると入れ子にもできる。[4]
-
box
箱ひげ図- デフォルトは外れ値の主張が強いので、
flierprops={"marker": "x"}
を指定することでマーカーを変える。
- デフォルトは外れ値の主張が強いので、
-
violin
カーネル密度推定グラフ- hue に指定した変数が2値であれば、
split=True
を指定することで人口ピラミッドみたいに左右半分ずつ表示できる。
- hue に指定した変数が2値であれば、
-
boxen
カクカクのカーネル密度推定グラフ
点推定値のプロット
-
point
折れ線グラフ-
join=False
を指定することで、ポイント間の線を消せる。
-
-
bar
棒グラフ- estimator に指定された関数で棒の長さが決定される。デフォルトは "mean"
- 誤差バーはデフォルトで "-"型なので、
capsize=.4
を指定することで "H"型にできる。
-
count
棒グラフ- 出現回数を数えてプロットする。
Figure-level 関数で使える引数
parameters | descriptions | defaults |
---|---|---|
row col |
subplot を作る時のグループ化の変数。同時指定も可能。 | |
col_wrap | col を指定した場合の、行方向の折り返し数。row と併用は不可。 | |
row_order col_order |
subplot の順番 | |
aspect | 各subplot における、高さに対する横幅の比。1より大きければ横長になる。 | 1 |
sharex sharey |
軸のスケールを共有するか否か。"col" や "row" も指定可能。 facet_kws={'sharex': True, 'sharey': True} で指定する。 |
True |
参考
Discussion