Seabornでヒートマップ作成

## はじめに
Pythonのグラフ描画ライブラリ"seaborn"で描画できるヒートマップについての備忘録．

## Seabornとは
Seabornはグラフ描画ライブラリであるmatplotlibに基づいたデータ視覚化ライブラリです．matplotlibに比べて，簡潔なコードでより洗練されたグラフを出力することができます．

## ヒートマップ
### 【デフォルト】
```python
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

arr_2d = np.arange(-8, 8).reshape((4, 4))

plt.figure()
sns.heatmap(arr_2d)

plt.show()
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/4fb9ef57-6c0d-ec39-77f0-3a778777924b.png)

---
### 【オプション】
```python
sns![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/120e583d-4fdd-966f-0e34-86ddaa2d67e5.png)
.heatmap(
    data,
    vmin=None,
    vmax=None,
    cmap=None,
    center=None,
    robust=False,
    annot=None,
    fmt='.2g',
    annot_kws=None,
    linewidths=0,
    linecolor='white',
    cbar=True,
    cbar_kws=None,
    cbar_ax=None,
    square=False,
    xticklabels='auto',
    yticklabels='auto',
    mask=None, ax=None,
    **kwargs
    )
```
---
### vmin，vmax
最大値，最小値を設定．
```python
sns.heatmap(arr_2d, vmin=-10, vmax=10)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/ff6cbaf4-d1af-6363-38b7-576b90e4b5fd.png)

---
### cmap
カラーマップを変更．
```python
sns.heatmap(arr_2d, cmap="cividis")
```
![Figure_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/085317ad-e627-9965-d3ce-012fcb8c948d.png)

---
### center
発散データをプロットする際に，カラーマップを中央に配置する値．このパラメータを使用すると，デフォルトのcmapが変更される．
```python
sns.heatmap(arr_2d, center=-10) #1
sns.heatmap(arr_2d, center=0)   #2
sns.heatmap(arr_2d, center=10)  #3
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/df3e877c-5416-6805-38e9-8a674e7570f3.png)

---
### robust
```True```かつ```vmin```または```vmax```がない場合，カラーマップの範囲は，極値の代わりにロバストな分位数を使って計算される．
```python
sns.heatmap(arr_2d, robust=True)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/fda19799-1235-10eb-2870-a3a67a37630a.png)

---
### annot
Trueの場合，各セルにデータの値を書き込む．
```python
sns.heatmap(arr_2d, annot=True)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/6a059101-f204-c344-3dde-957e555137c8.png)

---
### fmt
注釈を追加する際に使用する文字列フォーマットコード．

---
### annot_kws
```annot```が```True```の場合の```matplotlib.axes.Axes.text()```のキーワード引数．

---
### linewidths
各セルを分割する線を引く．
```python
sns.heatmap(arr_2d, linewidths=True)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/1836976e-9f0b-5219-c34f-21a3db8b8d98.png)

---
### linecolor
各セルを分割する線の色を変更する．
```python
sns.heatmap(arr_2d, linewidths=True, linecolor="Blue")
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/a49f33dc-0585-b334-1371-02e1b1817e1c.png)

---
### cbar
カラーバーを描画するか設定する．
```python
sns.heatmap(arr_2d, cbar=False)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/ee89d0ad-caeb-2901-cf1b-fb6320a07bc1.png)

---
### cbar_kws
```matplotlib.figure.Figure.colorbar()```のキーワード引数．

---
### square
Trueの場合，各セルが正方形になるようにAxesのアスペクトを"equal"に設定する．
```python
sns.heatmap(arr_2d, cbar=False)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/e87468ac-8cf2-e895-7da2-1aa5d3364884.png)

---
### xticklabels, yticklabels
```True```の場合，データフレームの列名をプロットする．```False```の場合，列名をプロットしない．リスト形式の場合，これらの代替ラベルを```xticklabels```としてプロットする．整数の場合，列名を使用するが，n個のラベル毎にプロットする．```auto```の場合，重複しないラベルを密にプロットする．
```python
lst_x = ["A", "B", "C", "D"]
lst_y = ["AA", "BB", "CC", "DD"]
plt.figure()
sns.heatmap(arr_2d, xticklabels=lst_x, yticklabels=lst_y)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/fbfc162e-e42f-5b3a-6174-5ca26b5c7460.png)

---
### square
Trueの場合，各セルが正方形になるようにAxesのアスペクトを"equal"に設定する．
```python
sns.heatmap(arr_2d, cbar=False)
```

---
### mask
maskが```True```のセルにはデータが表示されない．値がないセルは自動的にマスクされる．
```python
#対角行列をマスクする
mask = np.eye(len(arr_2d))
sns.heatmap(arr_2d, mask=mask)
```
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617469/88a0ce0d-6027-0dfe-ea10-cb10d0c2e245.png)