python 如何为seaborn热图中的遮罩单元格指定自定义颜色?

z5btuh9x  于 2023-06-04  发布在  Python
关注(0)|答案(2)|浏览(130)

我有一个值为-4到4的数据集,还有一些nan值。我用海运热图绘制热图。我需要使用的颜色图是从红到白色再到蓝。我的问题是掩蔽的细胞也是白色/灰色的,这是很难区分,然后值接近0的颜色Map。
有没有什么方法可以在不绘制两次热图的情况下将nan值指定为黑色?

hxzsmxv2

hxzsmxv21#

你有两个选择
1.使用颜色Map表的bad值。即,如果掩码值被设置为nan,则它们将通过以下方式以颜色集显示到色彩Map表

colormap.set_bad("black")

1.将轴的背景设为黑色,以便被屏蔽且因此未绘制的值显示为透明,背景颜色可透过。

ax.set_facecolor("black")
jvlzgdj9

jvlzgdj92#

  • .cm.get_cmap已在matplotlib 3.7中弃用
  • 使用mpl.colormaps['viridis']mpl.colormaps.get_cmap('viridis')代替。
import seaborn as sns
import numpy as np
import matplotlib as mpl

np.random.seed(2023)
matrix = np.random.random_sample(size=(10, 10)) - 0.5

mask = np.where(np.logical_or(matrix >= 0.2, matrix <= -0.2), True, False)

cmap = mpl.colormaps.get_cmap('viridis')
cmap.set_bad("k")

sns.heatmap(matrix, cmap=cmap, mask=mask)

下面是一个完整的例子:

import matplotlib as mpl
import seaborn as sns
cmap = mpl.cm.get_cmap('gray_r')
cmap.set_bad("white")
sns.heatmap(..., cmap=cmap)

相关问题