LoginSignup
146
125

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-01-14

はじめに

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

おわりに

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

146
125
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
146
125