如何在Seaborn热力图可视化时将NaN空白替换为0
解决Seaborn热力图空白行列替换为0.0的问题
你的热力图出现空白行/列,是因为计算相关系数后产生了全为NaN的行或列(比如某列所有数值完全相同,相关系数计算会返回NaN)。要直接把这些无效值替换成0.0,只需要在计算相关矩阵的步骤后添加填充NaN的操作即可:
核心修改步骤
- 计算
corr()后,调用fillna(0.0)将所有NaN值替换为0.0,这样热力图就不会出现空白区域
完整代码
from matplotlib.colors import ListedColormap, BoundaryNorm import matplotlib.pyplot as plt import seaborn as sns # 计算相关矩阵并替换所有NaN为0.0 corrmat0 = cluster_0.corr().fillna(0.0) my_colors = ['dodgerblue', 'navajowhite', 'firebrick'] my_cmap = ListedColormap(my_colors) bounds = [-2, 0.0, 0.99, 2] my_norm = BoundaryNorm(bounds, ncolors=len(my_colors)) plt.figure(figsize=(16,16)) ax = sns.heatmap(corrmat0, annot=True, square=True, cmap=my_cmap, norm=my_norm) plt.show() # 可选:确保图像正常显示
额外说明:你的颜色边界bounds已经包含了0.0的区间,替换后的0.0会自动匹配navajowhite颜色,和原有配色逻辑完全契合。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

