将值映射到 seaborn 热图中的特定颜色
Map value to specific colour in seaborn heatmap
我正在使用 seaborn 包在 Python 中绘制热图。我绘制的值是离散的,它们是整数 -1
、0
和 1
。
我希望热图中值为 -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'
).
我正在使用 seaborn 包在 Python 中绘制热图。我绘制的值是离散的,它们是整数 -1
、0
和 1
。
我希望热图中值为 -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'
).