【Python】seabornでグラフのグリッド表示 – PairGrid, pairplot, FacetGrid, JointGrid

Pythonデータ分析の基礎
スポンサーリンク

Pythonの描画ライブラリseabornのグラフ描画の続きをやっていきましょう。ここではグラフのグリッド表示を行います。

グリッド表示するメソッドは、グリッドの行と列にデータを描画するのに一般的な形式です。データを特徴ごとに分けられたグラフを作成するのに役立ちます。

ここでもGitHub上にあるデータセットをload_dataset()で使っていきます。

スポンサーリンク

データの準備

jupyter notebookにライブラリーをインポートしてデータの準備をしておきます。

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

ここではデータ分析でよく例として使われるiris(アヤメ)のデータを使ってみます。

iris = sns.load_dataset('iris')

冒頭の5つのデータを表示しておきます。

iris.head()

このデータを使ってグリッドについて見ていきましょう。

スポンサーリンク

Grids

グリッドについて、ここではPairGrid()、pairplot()、FacetGrid()、JointGrid()を見ていきます。

PairGrid()

PairGrid()は、データセットのペアごとの関係を表示します。サブプロットで具体的に表示していきます。

sns.PairGrid(iris)
sns.set()

ペアの組み合わせ毎のグリッドが表示されました。これにデータを描画していきます。

g = sns.PairGrid(iris)
g.map(plt.scatter)

mapメソッドを使って描画します。ここではscatterで分布図を当てはめています。

それぞれのカラムの組み合わせの分布図が表示されているのがわかります。

もう少しグラフを操作してみます。

map_diag()、map_upper()、map_lower()を使って、それぞれ対角線上、斜め上側、斜め下側に異なる性質のグラフを描画します。

g = sns.PairGrid(iris)
g.map_diag(plt.hist)
g.map_upper(plt.scatter)
g.map_lower(sns.kdeplot)

それぞれヒストグラム、分布図、カーネル密度推定量を描画しています。

pairplot()

pairplot()はPairGrid()のシンプルなバージョンで、こちらがよく使われるようです。

こちらにirisのデータを渡してみます。

sns.pairplot(iris)

対角線上にはヒストグラムが、斜め上と下には分布図が指定無しで表示されます。簡単に見ていくにはこの点は楽ですね。

今度はこのpairplot()にhueを指定してデータを限定してみます。

sns.pairplot(iris,hue='species',palette='rainbow')

hueにspeciesを指定して種類別に描画します。paletteをrainbowにして色分けします。

それぞれの色は凡例表示で種別に分けられているのがわかります。

FacetGrid()

次はFacetGrid()を見ていきます。FacetGrid()は、特徴に基づいてグリッド表示する一般的な方法となっています。

こちらはtipsデータをload_dataset()で読み込んで使ってみましょう。

tips = sns.load_dataset('tips')
tips.head()

FacetGrid()でグリッドを表示してみます。

g = sns.FacetGrid(tips, col="time", row="smoker")

time(横軸)とsmoker(縦軸)を軸としてグリッドが表示されました。

この組み合わせでtotal_billを取り出してヒストグラムを描画してみます。

g = sns.FacetGrid(tips, col="time",  row="smoker")
g = g.map(plt.hist, "total_bill")

今度はhueに性別を指定して男女別のデータに分けてみます。

g = sns.FacetGrid(tips, col="time",  row="smoker",hue='sex')
g = g.map(plt.scatter, "total_bill", "tip").add_legend()

scatterでtotal_billとtipの分布図にしています。legend()で凡例も表示します。

JointGrid()

JointGrid()は、jointplot()の一般的なグリッド形式です。jointplot()と見比べておくのもいいでしょう。

total_billとtipでグリッドを作ります。

g = sns.JointGrid(x="total_bill", y="tip", data=tips)

g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot(sns.regplot, sns.distplot)

regplotは回帰を視覚化します。distplotはヒストグラムを表示します。

スポンサーリンク

最後に

Pythonの描画ライブラリseabornのグラフ表示について、ここではグリッド表示をやってみました。

グリッド表示はデータを特徴ごとに分けられたグラフを作成するのに役立ちます。

ここではPairGrid()、pairplot()、FacetGrid()、JointGrid()を見てきました。

タイトルとURLをコピーしました