要約
自分自身の備忘のため作成。
- Excelの
条件付き書式
のように塗り分けたヒートマップをPython
で作成したかった -
seaborn
のヒートマップのデフォルトでは、連続したカラーマップしか使えない - 引数の
cmap
とcenter
を使用することで解決-
cmap
にてlist
形式で2色を指定し、center
で閾値を指定
-
背景
Excelでは以下のように条件付き書式
から数クリックで一定の閾値以上を色分けしたヒートマップが作成できる。
同様のことをPython
で行う場合、第一選択はseaborn
を使用することだと思う。
ただ、seaborn
では通常カラーマップは連続値しか指定できない。
解決策
stack overflowからの引用になってしまうが、以下のコードで解決。
heatmap.py
import pandas as pd
import seaborn as sns
df = pd.DataFrame({'a':[20, 13, 1, 11],
'b':[15, 46, 32, 12],
'c':[67, 51, 33, 12],
'd':[6, 44, 86, 32]},
index=['あ', 'い', 'う', 'え'])
sns.heatmap(data=df,
annot=True,
cmap=['white', 'red'], # 2色を指定
center=43.5 # 閾値を指定
)
plt.show()