seabornを活用する上で、公式サイトのギャラリーが勉強になりそうなので解説してみました。
まず第1弾は、lmplot関数を使って、Anscombe’s quartet(アンスコムの例)を表現してみます。
参考にしたのはこちらです。
そもそも「アンスコムの例」とは何かと言うと、散布図が全く別物なのに線形回帰をして回帰直線を引くと、回帰直線が同じものになってしまう現象です。ですので、機械的に回帰直線だけ求めてデータについてあれこれ判断すると危険であり、散布図を確認し傾向を把握することが不可欠であり、外れ値が統計量に与える影響は決して無視できないということです。
# ライブラリ読み込み
import seaborn as sns
# スタイルを設定(この場合は目盛りを入れる設定)
sns.set_theme(style="ticks")
# seabornにデフォルトで用意されている「アンスコムの例」のデータを読み込む
df = sns.load_dataset("anscombe")
# 与えられたデータを元に回帰直線付きのプロット図を出力
sns.lmplot(x="x", y="y", col="dataset", hue="dataset",
data=df, col_wrap=4, ci=None, palette="muted",
height=3, scatter_kws={"s": 30, "alpha": 1})
sns.set_themeについてはこちらに詳細が書かれています。
sns.lmplotについては、与えれらたデータから回帰直線を引いてくれます。各引数の説明をします。(詳細はこちら)
- x:グラフのX軸にする項目
- y:グラフのy軸にする項目
- col:どの項目でプロット図を分けるか。今回の例ではdatesetで分けようとしています。
- hue:プロット図の中で色分けしたい項目。
- data:取り扱うデータ
- col_wrap:複数プロット図があり、最大何個まで横に並べるのか。
- ci:回帰直線とあわせて信頼区間も出力してくれます。デフォルト値は95(%)。Noneにすると回帰直線のみの表示となります。
- palette:グラフのカラーパレットを指定。詳細はこちら。
- height:グラフの高さを指定。
- scatter_kws:plot.scatterやplot.lineに渡すパラメータを指定。今回の例ではsはマーカーのサイズ、alphaは透明度(1が不透明)を表しています。
わずか数行でこのような可視化ができるのはとても助かりますね。同じことを自分でやろうとしたら、結構大変ですからね。。。