如何调整相关性矩阵图尺寸以优化可视化效果?
解决高特征量相关性矩阵热力图可读性问题
嗨,我完全懂你的困扰——72个特征的相关性矩阵默认尺寸下肯定会挤成一团,根本没法看清细节。咱们可以从调整图表尺寸、优化标签布局、简化冗余内容这几个方面来优化,一步步让热力图变得可读:
1. 直接放大图表尺寸
这是最直观的解决方法,在绘制热力图前用matplotlib设置更大的画布尺寸,给每个特征足够的显示空间:
%matplotlib inline import matplotlib.pyplot as plt import seaborn as sns corr = data.corr() # 根据特征数量调整画布大小,72个特征建议至少设置(25,25)的尺寸 plt.figure(figsize=(25, 25)) sns.heatmap(corr, xticklabels=corr.columns.values, yticklabels=corr.columns.values) plt.show()
2. 优化标签显示,避免重叠
光放大尺寸还不够,标签重叠会依然影响可读性,咱们可以给标签添加旋转、调整对齐方式,同时缩小字体适配更多特征:
%matplotlib inline import matplotlib.pyplot as plt import seaborn as sns corr = data.corr() plt.figure(figsize=(25, 25)) ax = sns.heatmap(corr, xticklabels=corr.columns.values, yticklabels=corr.columns.values, fontsize=8) # 缩小字体适配高密度特征 # 调整x轴标签旋转角度和对齐方式,彻底避免重叠 ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right') plt.show()
3. 简化对称的相关性矩阵
相关性矩阵是对称的(A和B的相关系数等于B和A的),咱们可以只显示上三角或下三角区域,减少视觉冗余:
%matplotlib inline import matplotlib.pyplot as plt import seaborn as sns import numpy as np corr = data.corr() plt.figure(figsize=(25, 25)) # 创建上三角掩码,只保留下三角区域显示 mask = np.triu(np.ones_like(corr, dtype=bool)) sns.heatmap(corr, xticklabels=corr.columns.values, yticklabels=corr.columns.values, fontsize=8, mask=mask) # 应用掩码隐藏冗余区域 ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right') plt.show()
4. 突出关键相关性(可选)
如果不需要看所有相关性细节,可以只显示绝对值大于某一阈值的相关系数,或者关闭标注让颜色对比更清晰:
%matplotlib inline import matplotlib.pyplot as plt import seaborn as sns import numpy as np corr = data.corr() plt.figure(figsize=(25, 25)) mask = np.triu(np.ones_like(corr, dtype=bool)) # 只保留绝对值>0.5的相关性标注,过滤弱相关的冗余信息 annot = np.where(np.abs(corr) > 0.5, corr, "") sns.heatmap(corr, xticklabels=corr.columns.values, yticklabels=corr.columns.values, fontsize=8, mask=mask, annot=annot, # 仅显示关键相关性数值 fmt=".2f") ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right') plt.show()
这些方法组合起来,应该能让你的72个特征相关性矩阵变得清晰可读啦!
内容的提问来源于stack exchange,提问作者stone rock
相关产品推荐
相关产品推荐

