将值映射到 seaborn 热图中的特定颜色

Map value to specific colour in seaborn heatmap

我正在使用 seaborn 包在 Python 中绘制热图。我绘制的值是离散的,它们是整数 -101

我希望热图中值为 -1 的单元格显示为绿色,0 为黄色,1 为红色。

是否可以在 cubehelix_palette()colour_palette() 函数中指定此裁决?

你可以使用matplotlib的ListedColormap如下:

import numpy as np
import seaborn as sns
from matplotlib.colors import ListedColormap

data = np.random.randint(-1, 2, (10,10)) # Random [-1, 0, 1] data
sns.heatmap(data, cmap=ListedColormap(['green', 'yellow', 'red']), annot=True)

产生:

您可以将字符串 'green', 'yellow', 'red' 替换为十六进制颜色,例如 '#FF0000'(相当于 'red')或 rgb 颜色,例如 (1.,0.,0.)(也相当于 'red').