はじめに
Pythonのグラフ描画ライブラリ"seaborn"で描画できるヒートマップについての備忘録.
Seabornとは
Seabornはグラフ描画ライブラリであるmatplotlibに基づいたデータ視覚化ライブラリです.matplotlibに比べて,簡潔なコードでより洗練されたグラフを出力することができます.
ヒートマップ
【デフォルト】
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()
【オプション】
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
最大値,最小値を設定.
sns.heatmap(arr_2d, vmin=-10, vmax=10)
cmap
カラーマップを変更.
sns.heatmap(arr_2d, cmap="cividis")
center
発散データをプロットする際に,カラーマップを中央に配置する値.このパラメータを使用すると,デフォルトのcmapが変更される.
sns.heatmap(arr_2d, center=-10) #1
sns.heatmap(arr_2d, center=0) #2
sns.heatmap(arr_2d, center=10) #3
robust
True
かつvmin
またはvmax
がない場合,カラーマップの範囲は,極値の代わりにロバストな分位数を使って計算される.
sns.heatmap(arr_2d, robust=True)
annot
Trueの場合,各セルにデータの値を書き込む.
sns.heatmap(arr_2d, annot=True)
fmt
注釈を追加する際に使用する文字列フォーマットコード.
annot_kws
annot
がTrue
の場合のmatplotlib.axes.Axes.text()
のキーワード引数.
linewidths
各セルを分割する線を引く.
sns.heatmap(arr_2d, linewidths=True)
linecolor
各セルを分割する線の色を変更する.
sns.heatmap(arr_2d, linewidths=True, linecolor="Blue")
cbar
カラーバーを描画するか設定する.
sns.heatmap(arr_2d, cbar=False)
cbar_kws
matplotlib.figure.Figure.colorbar()
のキーワード引数.
square
Trueの場合,各セルが正方形になるようにAxesのアスペクトを"equal"に設定する.
sns.heatmap(arr_2d, cbar=False)
xticklabels, yticklabels
True
の場合,データフレームの列名をプロットする.False
の場合,列名をプロットしない.リスト形式の場合,これらの代替ラベルをxticklabels
としてプロットする.整数の場合,列名を使用するが,n個のラベル毎にプロットする.auto
の場合,重複しないラベルを密にプロットする.
lst_x = ["A", "B", "C", "D"]
lst_y = ["AA", "BB", "CC", "DD"]
plt.figure()
sns.heatmap(arr_2d, xticklabels=lst_x, yticklabels=lst_y)
square
Trueの場合,各セルが正方形になるようにAxesのアスペクトを"equal"に設定する.
sns.heatmap(arr_2d, cbar=False)
mask
maskがTrue
のセルにはデータが表示されない.値がないセルは自動的にマスクされる.
#対角行列をマスクする
mask = np.eye(len(arr_2d))
sns.heatmap(arr_2d, mask=mask)