You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:05:50