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

如何用Python极简代码调用matplotlib绘制带标注的混淆矩阵

混淆矩阵极简可视化实现

完全可以用matplotlib生态的工具实现,代码精简、出图美观还自带标注,针对你固定[[tp, fp], [fn, tn]]排列格式的数组,优先推荐用seaborn(基于matplotlib的封装库)实现,代码量最短。


方案1:最短代码实现(matplotlib + seaborn)

先安装依赖(如果没装的话):pip install matplotlib seaborn
可直接运行的代码:

import matplotlib.pyplot as plt
import seaborn as sns

# 替换成你自己的混淆矩阵数组即可
cm = [[25, 4], [5, 17]]

sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
            xticklabels=['正例', '反例'],
            yticklabels=['正例', '反例'])
plt.xlabel('预测类别')
plt.ylabel('真实类别')
plt.show()

核心参数作用:

  • annot=True:自动在每个单元格渲染对应数值标注,不需要手动添加文本
  • fmt='d':强制标注以整数格式展示,避免出现浮点数、科学计数法
  • cmap='Blues':采用低饱和度蓝色色阶,视觉清爽,也可根据喜好替换为Greens、OrRd等matplotlib内置色板
  • 坐标轴标签和单元格完全对应固定排列规则:

    左上单元格:真阳性(TP) | 右上单元格:假阳性(FP)
    左下单元格:假阴性(FN) | 右下单元格:真阴性(TN)


方案2:纯matplotlib无额外依赖实现

如果不想额外安装seaborn,纯matplotlib也可以实现同等效果,只是需要手动添加数值标注:

import matplotlib.pyplot as plt
import numpy as np

cm = np.array([[25, 4], [5, 17]])

plt.imshow(cm, cmap='Blues')
plt.xticks([0, 1], ['正例', '反例'])
plt.yticks([0, 1], ['正例', '反例'])
plt.xlabel('预测类别')
plt.ylabel('真实类别')
# 循环添加单元格数值标注
for row in range(2):
    for col in range(2):
        plt.text(col, row, cm[row, col], ha='center', va='center', color='black')
plt.colorbar()
plt.show()

两种方案出图都自带色阶条、类别标签、数值标注,需要调整画布大小、字体的话只需要加一行plt.figure(figsize=(x,y))即可自定义尺寸。


内容的提问来源于stack exchange,提问作者robert_gonzalez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:21:36