Python
機械学習
DeepLearning
データサイエンス
seaborn

追伸。そろそろおまえもseabornヒートマップを使うように。 母より


はじめに

seabornのヒートマップの使い方をまとめました。

記事タイトルは相変わらずコピーメカに考えてもらってます。

母はヒートマップを暖房器具か何かだと思っているのかな?


seaborn ヒートマップの使い方

今回はseabornのflightsというデータを使っていきます。


script.ipynb

import seaborn as sns; sns.set()

import pandas as pd
flights = sns.load_dataset("flights")
display(flights.head())

WS000000.JPG

※年月毎に乗客数があるだけのシンプルなデータです。


基本


script.ipynb

%matplotlib inline

flights = flights.pivot("month", "year", "passengers")
heatmap = sns.heatmap(flights)

heatmap1.png


セル内に数値表示 : annot

annot=Trueを指定すると、セル内に値が表示される。

fmtはannotを追加する際の文字列のフォーマット

少数1桁まではfmt=".1f"

少数2桁まではfmt=".2f"

整数ではfmt="d"


script.ipynb

heatmap = sns.heatmap(flights,annot=True,fmt="d")


heatmap2.png


カラーバーの範囲指定 : vmin,vmax


script.ipynb

heatmap = sns.heatmap(flights,annot=True,fmt="d",vmin=200,vmax=400)


heatmap3.png


カラーバーの範囲をロバストに : robust


script.ipynb

heatmap = sns.heatmap(flights,annot=True,fmt="d",robust=True)


heatmap4.png


セル境界線の幅設定 : linewidths

linewidthsを設定することで、セル間に隙間を持たせることができる。


script.ipynb

heatmap = sns.heatmap(flights,annot=True,fmt="d",linewidths=.5)


heatmap5.png


セル境界線の色彩設定 : linecolor


script.ipynb

heatmap = sns.heatmap(flights,annot=True,fmt="d",linewidths=.5,linecolor="Blue")


heatmap6.png


色調の変更 : cmap

cmapで色調を変更できる。設定値の詳細は以下を参照。

https://matplotlib.org/examples/color/colormaps_reference.html


script.ipynb

heatmap = sns.heatmap(flights,cmap="Greens")


heatmap7.png


中央値の設定 : center

centerでセルを指定すると、そのセル部分を中央値の黒色としてヒートマップが形成される。

買ったばかりの鉄フライパン熱した時みたいで綺麗だと思った。


script.ipynb

heatmap = sns.heatmap(flights, center=flights.loc["July", 1955])


heatmap8.png


カラーバーの有無 : cbar

cbar=Falseでカラーバーを非表示に。


script.ipynb

heatmap = sns.heatmap(flights,cbar=False)


heatmap9.png


正方形 : square

square=Trueでヒートマップが正方形になるよ。


script.ipynb

heatmap = sns.heatmap(flights,square=True)


heatmap10.png


X軸,Y軸の設定 : xticklabels , yticklabels

xticklabels , yticklabelsに数値を指定すると間隔指定になる。


script.ipynb

heatmap = sns.heatmap(flights,xticklabels=5, yticklabels=2)


heatmap11.png

Falseを指定すると、非表示に。


script.ipynb

heatmap = sns.heatmap(flights,xticklabels=False, yticklabels=False)


heatmap12.png


応用編:カラーバーを下に持ってくる。

高さの比が9:1の縦2つのサブプロットを取得し、

それぞれ、ax,cbar_axに指定してやるとヒートマップの下にカラーバーを持ってくることができる。


script.ipynb

import matplotlib.pyplot as plt

grid_kws = {"height_ratios": (.9, .1), "hspace": .5}
f, (ax, cbar_ax) = plt.subplots(2, gridspec_kw=grid_kws)
heatmap = sns.heatmap(flights, ax=ax,
cbar_ax=cbar_ax,
cbar_kws={"orientation": "horizontal"}
)

heatmap13.png


おわりに

冬には温かい色調が良い。