Python

Python seaborn チュートリアル プロット機能 統計的関係の可視化(3)

原文のドキュメントはこちらから。

ファセットによる複数の関係を表示

2つの変数間の関係が複数の他の変数に依存しているか理解したい場合を考える。最良のアプローチは、複数のプロットを作成することかもしれない。relplot()はFacetGridをベースにしているため、これは簡単に実現できる。追加の変数の影響を示すために、プロットの意味的な役割の一つに割り当てるのではなく、可視化を「ファセット」するために使用する。これは複数の軸を作り、それぞれにデータのサブセットをプロットすることを意味する。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="darkgrid")

tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", hue="smoker", col="time", data=tips)

plt.show()

また、この方法で2つの変数の影響を表示できる。1つは列の入れ子、もう1つは行の入れ子で表示する。グリッドに多くの変数を追加する場合、図のサイズを小さくしたいことがある。FacetGrid(ファセットグリッド)のサイズは、各ファセットの高さとアスペクト比によってパラメータ化される。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="darkgrid")

fmri = sns.load_dataset("fmri")
sns.relplot(x="timepoint", y="signal", hue="subject", col="region", 
            row="event", height=3, kind="line", estimator=None, data=fmri)

plt.show()

ある変数の多くのレベルにまたがる効果を調べたい場合、その変数を列にファセットして、そのファセットを行に「ラップ」するのは良いアイデアである。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="darkgrid")

fmri = sns.load_dataset("fmri")
sns.relplot(x="timepoint", y="signal", hue="event", style="event", col="subject", col_wrap=5,
            height=3, aspect=.75, linewidth=2.5, kind="line", data=fmri.query("region == 'frontal'"))
plt.show()

これらの可視化は、ラティスプロット(”lattice” plots)や スモールマルチプル (“small-multiples”)と呼ばれる。全体的なパターンとそのパターンからの逸脱を容易に検出できるような形式でデータを表示するため、非常に効果的である。scatterplot() や relplot() の柔軟性を利用すべきだが、複雑なプロットよりも単純なプロットの方が通常は、より効果的である。