我有一个值为-4到4的数据集,还有一些nan值。我用海运热图绘制热图。我需要使用的颜色图是从红到白色再到蓝。我的问题是掩蔽的细胞也是白色/灰色的,这是很难区分,然后值接近0的颜色Map。有没有什么方法可以在不绘制两次热图的情况下将nan值指定为黑色?
hxzsmxv21#
你有两个选择1.使用颜色Map表的bad值。即,如果掩码值被设置为nan,则它们将通过以下方式以颜色集显示到色彩Map表
bad
nan
colormap.set_bad("black")
1.将轴的背景设为黑色,以便被屏蔽且因此未绘制的值显示为透明,背景颜色可透过。
ax.set_facecolor("black")
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)
2条答案
按热度按时间hxzsmxv21#
你有两个选择
1.使用颜色Map表的
bad
值。即,如果掩码值被设置为nan
,则它们将通过以下方式以颜色集显示到色彩Map表1.将轴的背景设为黑色,以便被屏蔽且因此未绘制的值显示为透明,背景颜色可透过。
jvlzgdj92#
.cm.get_cmap
已在matplotlib 3.7
中弃用mpl.colormaps['viridis']
或mpl.colormaps.get_cmap('viridis')
代替。下面是一个完整的例子: