如何解决Seaborn热力图绘制MNIST混淆矩阵的显示溢出问题?
解决MNIST混淆矩阵热力图数字超出绘图区域的问题
嘿,我之前做MNIST分类的时候也踩过这个坑!增大figsize没用的话,试试这几个亲测有效的小技巧,帮你把混淆矩阵完整显示出来:
缩小标注字体+优化热力图参数
很多时候不是画布不够大,是标注的数字字体太占空间。在seaborn.heatmap里直接调整标注的字体大小,还可以去掉不必要的颜色条来节省空间:import seaborn as sns import matplotlib.pyplot as plt # 假设confusion_matrix是你的MNIST混淆矩阵数据 plt.figure(figsize=(10, 8)) sns.heatmap(confusion_matrix, annot=True, # 显示数字标注 fmt='d', # 以整数格式显示 cmap='Blues', annot_kws={'size': 8}, # 把标注字体缩小,根据画布大小调整 cbar=False, # 如果不需要颜色条可以关掉,省空间 xticklabels=range(10), yticklabels=range(10)) plt.xlabel('Predicted Label') plt.ylabel('True Label') plt.title('MNIST Confusion Matrix')强制调整布局,让matplotlib自动适配
有时候画布尺寸够,但元素的边距没调好,导致内容溢出。在绘图代码最后加上这行,让matplotlib自动调整所有元素的位置:plt.tight_layout()如果自动调整效果不好,还可以手动设置边距:
plt.subplots_adjust(left=0.15, right=0.95, top=0.9, bottom=0.15)旋转坐标轴标签避免重叠
如果坐标轴的数字标签还是挤在一起,可以旋转x轴标签,让它们更紧凑:plt.xticks(rotation=45, ha='right') # 右对齐旋转后的标签,避免遮挡 plt.yticks(rotation=0) # y轴标签保持水平,更易读组合大法:大画布+小字体
要是上面的方法单独用还不够,试试把figsize调到更大(比如(12,10)),同时把annot_kws的size设得更小(比如6-7),再配合tight_layout,基本就能让所有数字都乖乖待在绘图区域里了~
内容的提问来源于stack exchange,提问作者user_12
相关产品推荐
相关产品推荐

