▶ グラフを並べて表示して比較する方法は以下の記事で解説しています。
はじめに
これまで何度か可視化を扱ってきました。今回はグラフのグリッド表示を行います。グリッドの行と列にデータを描画する一般的な形式です。特徴ごとに分けられたグラフを作成するのに役立ちます。 PairGrid()、pairplot()、FacetGrid()、を扱うことにしましょう。
グリッド
PairGrid()
PairGrid()は、データセットのペアごとの関係を表示します。まずはグリッドを作成しましょう。
sns.PairGrid(iris)
sns.set()
組み合わせごとにグリッドができました。PairGridでは()内にデータフレームを指定すると、自動でペアの組み合わせとグリッドを生成してくれます。ここにmapメソッドを使ってデータを描画します。 ここではscatterで分布図を当てはめてみましょう。
g = sns.PairGrid(iris)
g.map(plt.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()のシンプルなバージョン です。
sns.pairplot(iris)
このpairplot()にhueを指定してみましょう。
sns.pairplot(iris,hue='species',palette='rainbow')
FacetGrid()
FacetGrid()は、特徴に基づいてグリッド表示する方法です。ここではtipsデータセットを使いましょう。
tips = sns.load_dataset('tips')
tips.head()
このデータセットを使って、FaceGrid()を試してみましょう。
g = sns.FacetGrid(tips, col="time", row="smoker")
PairGrid()ではデータフレームのみを指定しましたが、FacetGrid()では、データセット、col(列)、row(行)を指定します。これでグリッドを生成したら、あとは同様にmapメソッドで描画をしていきます。
time(横軸)とsmoker(縦軸)を軸としてグリッドが表示されました。この組み合わせでtotal_billを取り出してヒストグラムを描画してみましょう。
g = sns.FacetGrid(tips, col="time", row="smoker")
g = g.map(plt.hist, "total_bill")
hueにsexを指定して、total_billとtipの散布図を描くには次のようにします。
g = sns.FacetGrid(tips, col="time", row="smoker",hue='sex')
g = g.map(plt.scatter, "total_bill", "tip").add_legend()
まとめ
いかがでしょうか?今回はGridを扱いました。このように特徴量の組み合わせごとにプロットすることで、特徴が見えてくることもあるので、非常に有用ですね。
コメント