Seabornによる散布図(scatterplot)作成の例
Seabornライブラリを活用したScatterplotの例をご紹介します。このチュートリアルでは、tipsデータセットを例に、散布図の基本的な描画方法から、さまざまなセマンティックなマッピングの適用方法までを学びます。tipsはチップの額に関するデータセットで、seabornが提供してくれるものです。tipsデータセットには数値変数とカテゴリカル変数が混在しており、この多様性を利用して散布図の豊富な表現を探ります。
まず、Seabornのload_dataset関数を使ってtipsデータセットを読み込みます。
import seaborn as sns
sns.set_theme()
tips = sns.load_dataset("tips")
tips.head()
基本的な散布図
2つの変数間の散布図を描画するには、scatterplot関数にデータフレームとx、y軸に使用する変数名を指定します。
sns.scatterplot(data=tips, x="total_bill", y="tip")

色(hue)を使用したグルーピング
hueパラメータを使用することで、点の色を変え、異なるカテゴリのデータを区別できます。
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")

スタイル(style)でマーカーを変更
styleパラメータを使用して、マーカーの形状を変更し、よりアクセシブルなプロットを作成します。
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="time")

色(hue)とスタイル(style)の独立した変更
hueとstyleを異なる変数に割り当てることで、色とマーカーを独立して変更できます。
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day", style="time")

数値データのセマンティックマッピング
hueに数値変数を割り当てると、量的なマッピングが適用され、デフォルトのパレットが変わります。
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size")

カスタムパレットの適用
カテゴリカルなマッピングを強制するために、カテゴリカルパレット名や明示的な色を指定します。
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", palette="deep")

サイズ(size)によるセマンティックマッピング
sizeパラメータに数値変数を割り当てることで、点の大きさにセマンティックなマッピングを適用します。
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", size="size")

カスタムマーカーの使用
markersパラメータにリストや辞書を渡すことで、スタイル変数に応じた特定のマーカーを指定できます。
markers = {"Lunch": "s", "Dinner": "X"}
sns.scatterplot(data=tips, x="total_bill", y="tip", style="time", markers=markers)

マーカーの形を任意に設定
matplotlib.axes.Axes.scatterに直接渡される追加のキーワード引数を使用して、任意にマーカーの形を設定できます。
sns.scatterplot(data=tips, x="total_bill", y="tip", s=100, color=".2", marker="+")

wide-formデータの使用
wide-formデータを使用すると、各列がインデックスに対してプロットされ、hueとstyleマッピングも使用できます。
import pandas as pd
import numpy as np
index = pd.date_range("1 1 2000", periods=100, freq="m", name="date")
data = np.random.randn(100, 4).cumsum(axis=0)
wide_df = pd.DataFrame(data, index, ["a", "b", "c", "d"])
sns.scatterplot(data=wide_df)

複数のサブプロットへの分割
relplotを使用してscatterplotとFacetGridを組み合わせ、追加のカテゴリカル変数によるグルーピングを複数のサブプロットに渡って描画します。
sns.relplot(
data=tips, x="total_bill", y="tip",
col="time", hue="day", style="day",
kind="scatter"
)

まとめ
seabornを用いてさまざまな散布図の作り方を見てきました。データの分析やプレゼンテーションに役立てていただけると幸いです。