Jupyter中Python Seaborn热力图未显示全部相关性问题求助
解决热力图无法显示所有关注列的问题
嘿,我明白你碰到的麻烦了——想展示特定列的相关性,结果热力图要么显示了全部列,要么关注的列没出全对吧?问题出在你直接用了整个数据集来计算相关矩阵,咱们只需要先筛选出你关心的列,再走后续流程就行,看我给你改改代码:
第一步:明确你关注的列
先把你想展示的列名列出来,替换成你实际需要的:
# 自定义你要展示的列列表 focus_columns = ["列A", "列B", "列C", "列D"] # 换成你的真实列名
第二步:筛选数据并计算相关矩阵
用上面的列列表从原数据里提取子集,再计算相关性,这样corr就只包含你关注的列了:
sns.set(style="white") # 先筛选关注的列,再计算相关矩阵 corr = data[focus_columns].corr()
第三步:保留后续的掩码、画布和色板设置
这部分你的代码没问题,直接复用就行:
# 生成上三角掩码 mask = np.zeros_like(corr, dtype=np.bool) mask[np.triu_indices_from(mask)] = True # 设置matplotlib画布 f, ax = plt.subplots(figsize=(11, 9)) # 生成自定义发散色板 cmap = sns.diverging_palette(220, 10, as_cmap=True)
第四步:绘制热力图(可选优化标签显示)
如果列名太长导致挤在一起,别忘了加个标签旋转的设置,让可读性更好:
# 绘制热力图 sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0, square=True, linewidths=.5, cbar_kws={"shrink": .5}) # 旋转x轴标签,避免重叠 plt.xticks(rotation=45, ha='right') plt.show()
这样修改后,热力图就只会显示你指定的那些列啦!要是还有列显示不全的情况,你可以调大figsize里的数值,比如改成(15,12),给画布更多空间。
内容的提问来源于stack exchange,提问作者Christian Ulrich
相关产品推荐
相关产品推荐

