Seabornでhueを引数に持たないメソッドでも色分けをする方法
はじめに
データを綺麗なグラフで可視化できるライブラリseaborn。なかでもいくつかのメソッドではhueという引数にカテゴリを指定すると、そのカテゴリごとに色分けをしてグラフを描いてくれます。ところが、一部のメソッドはこのhueを引数にとらないものもあります。そんな場合でもカテゴリごとに色分けをする方法を紹介します。
環境はpython: 3.7.4 seaborn: 0.9.0
引数hueとは
まずはcountplotメソッドでhueを使ってみましょう。データはtitanicです。
import pandas as pd
import seaborn as sns
data=pd.read_csv("train.csv")
sns.countplot(x='Embarked', data=data, hue='Survived')

このように'Survived'のカテゴリ毎に色分けしてグラフを描いてくれます。
hueを引数に持たない場合
さて、ここからが本題。例えばseabornのdistplotメソッドにはhueという引数はありません。(seaborn.distplot)
でも、あるカテゴリごとの分布が見たい場合もありますよね。そんな場合に使えるのがFacetGridです。
g=sns.FacetGrid(data, hue='Survived', size=5)
g.map(sns.distplot, "Fare")
g.add_legend()

このように、FacetGridメソッドのhueに指定してあげればhueを引数に持たないグラフにも対応できます。(FacetGridについてより詳しくは、SeabornのFacetGridでプロットして可視化 などを参考にしてください)
まとめ
distplot、kdeplotなどhueを引数に持たないグラフで色分けしたい場合はFacetGridを使いましょう。
最新記事
すべて表示現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud Firestore library for Python. Make sure to install the "google-clo
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を求める、という感じです。 f(x, a, b)=a*x^2+b (a>0 and b>0) 今回はそんな手法についてご紹介しま
現象 spicy.optimizeのleastsqで最小二乗法でフィッティングをしようとしたらタイトルのエラーが発生。 from scipy import optimize import numpy as np def internalFunc1(x, plist): a=plist[0] b=plist[1] return a*x**2+b