seabornサンプルギャラリー解説(Scatterplot with multiple semantics)

seabornを活用する上で、公式サイトのギャラリーが勉強になりそうなので解説してみました。

第2弾は、scatterplot関数を使って、seaborn付属のダイヤモンドのデータを可視化してみます。

参考にしたのはこちらです。

# ライブラリ読み込み
import seaborn as sns
import matplotlib.pyplot as plt

# スタイルを設定(この場合は格子状にする設定)
sns.set_theme(style="whitegrid")

# seabornにデフォルトで用意されているダイヤモンドのデータを読み込む
diamonds = sns.load_dataset("diamonds")

# グラフのサイズを設定
f, ax = plt.subplots(figsize=(6.5, 6.5))

# 軸を表示しないように設定(今回は軸を表示してしまうと表示がおかしくなってしまう)
sns.despine(f, left=True, bottom=True)

# clarityのラベルを設定
clarity_ranking = ["I1", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"]

# 与えられたデータを元に散布図を出力。ポイントの色とサイズで区分を表現。
sns.scatterplot(x="carat", y="price", hue="clarity", size="depth", palette="ch:r=-.2,d=.3_r",
                hue_order=clarity_ranking, sizes=(1, 8), linewidth=0, data=diamonds, ax=ax)

sns.scatterplotについては、与えれらたデータから散布図を描画してくれます。各引数の説明をします。(詳細はこちら

  • x:グラフのX軸にする項目
  • y:グラフのy軸にする項目
  • hue:散布図の中で色分けしたい項目。
  • size:散布図の中でサイズ分けしたい項目。
  • palette:グラフのカラーパレットを指定。詳細はこちら
  • hue_order:hueに対してラベルを設定。(hueが数字になっている場合に設定するとベター)
  • sizes:sizeに対してサイズの範囲を設定。
  • linewidth:ポイントの縁の幅です。今回の例では0になっているので縁は付きません。
  • data:取り扱うデータ
  • ax:軸に関する指定をmatplotlibの形式で指定。

覚えておくと色々と便利ですね!