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

# はじめに
seabornのヒートマップの使い方をまとめました。
記事タイトルは相変わらずコピーメカに考えてもらってます。
母はヒートマップを暖房器具か何かだと思っているのかな？

# seaborn ヒートマップの使い方
今回はseabornのflightsというデータを使っていきます。

``` python:script.ipynb 
import seaborn as sns; sns.set()
import pandas as pd
flights = sns.load_dataset("flights")
display(flights.head())
```

![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/273349/cbfea6fa-0766-49e4-2233-0ca1d7d4a433.jpeg)

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

## 基本
``` python:script.ipynb
%matplotlib inline
flights = flights.pivot("month", "year", "passengers")
heatmap = sns.heatmap(flights)
```
![heatmap1.png](https://qiita-image-store.s3.amazonaws.com/0/273349/96109981-cae3-14d9-1582-97c64e20b229.png)

## セル内に数値表示 : annot

annot=Trueを指定すると、セル内に値が表示される。 
fmtはannotを追加する際の文字列のフォーマット 
少数1桁まではfmt=".1f" 
少数2桁まではfmt=".2f" 
整数ではfmt="d"

``` python:script.ipynb
heatmap = sns.heatmap(flights,annot=True,fmt="d")
```
![heatmap2.png](https://qiita-image-store.s3.amazonaws.com/0/273349/44cb598a-c6b0-8dad-b24e-8e6505fd7b04.png)

## カラーバーの範囲指定 : vmin,vmax
``` python:script.ipynb
heatmap = sns.heatmap(flights,annot=True,fmt="d",vmin=200,vmax=400)
```
![heatmap3.png](https://qiita-image-store.s3.amazonaws.com/0/273349/c74b43b8-44f7-3563-a055-6f5cb2253e02.png)

## カラーバーの範囲をロバストに : robust
``` python:script.ipynb
heatmap = sns.heatmap(flights,annot=True,fmt="d",robust=True)
```
![heatmap4.png](https://qiita-image-store.s3.amazonaws.com/0/273349/63bc3c1e-cfa6-ba7b-c7f8-53418c7c0de0.png)

## セル境界線の幅設定 : linewidths 
linewidthsを設定することで、セル間に隙間を持たせることができる。

``` python:script.ipynb
heatmap = sns.heatmap(flights,annot=True,fmt="d",linewidths=.5)
```
![heatmap5.png](https://qiita-image-store.s3.amazonaws.com/0/273349/0d788926-ed96-e30a-a40e-e6e3486e564d.png)

## セル境界線の色彩設定 : linecolor
``` python:script.ipynb
heatmap = sns.heatmap(flights,annot=True,fmt="d",linewidths=.5,linecolor="Blue")
```
![heatmap6.png](https://qiita-image-store.s3.amazonaws.com/0/273349/20442235-9e2f-0e2d-bd8e-af60f75d00ea.png)

## 色調の変更 : cmap
cmapで色調を変更できる。設定値の詳細は以下を参照。 
https://matplotlib.org/examples/color/colormaps_reference.html

``` python:script.ipynb
heatmap = sns.heatmap(flights,cmap="Greens")
```
![heatmap7.png](https://qiita-image-store.s3.amazonaws.com/0/273349/88db8ed3-6710-bc20-d075-f302a7f3b84a.png)

## 中央値の設定 : center
centerでセルを指定すると、そのセル部分を中央値の黒色としてヒートマップが形成される。
買ったばかりの鉄フライパン熱した時みたいで綺麗だと思った。

``` python:script.ipynb
heatmap = sns.heatmap(flights, center=flights.loc["July", 1955])
```
![heatmap8.png](https://qiita-image-store.s3.amazonaws.com/0/273349/fe0c78c6-223b-465c-c5f9-cc1b66f818df.png)

## カラーバーの有無 : cbar
cbar=Falseでカラーバーを非表示に。

``` python:script.ipynb
heatmap = sns.heatmap(flights,cbar=False)
```
![heatmap9.png](https://qiita-image-store.s3.amazonaws.com/0/273349/5822066d-7b69-3029-d843-ef85a54b58a8.png)

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

``` python:script.ipynb
heatmap = sns.heatmap(flights,square=True)
```
![heatmap10.png](https://qiita-image-store.s3.amazonaws.com/0/273349/0a5e18b7-0e3a-86a1-2dbf-a770d9b97747.png)

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

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

``` python:script.ipynb
heatmap = sns.heatmap(flights,xticklabels=5, yticklabels=2)
```
![heatmap11.png](https://qiita-image-store.s3.amazonaws.com/0/273349/4f6f5369-783c-5445-03ae-1b896d691da4.png)

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

``` python:script.ipynb
heatmap = sns.heatmap(flights,xticklabels=False, yticklabels=False)
```

![heatmap12.png](https://qiita-image-store.s3.amazonaws.com/0/273349/a9596d10-3b97-26fe-0dc1-dc7eb57d2861.png)

## 応用編：カラーバーを下に持ってくる。
高さの比が9:1の縦２つのサブプロットを取得し、
それぞれ、ax,cbar_axに指定してやるとヒートマップの下にカラーバーを持ってくることができる。

``` python: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](https://qiita-image-store.s3.amazonaws.com/0/273349/e1bf97aa-3587-b732-3a81-262632a25334.png)

# おわりに
冬には温かい色調が良い。