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

如何为Seaborn热力图左侧添加行精度(Row-wise Accuracy)?

实现Seaborn热力图左侧添加每行精度

当然可以实现这个需求,下面是修改后的代码,能在热力图左侧添加每行的精度值,效果和你要的参考图一致:

import seaborn as sb
import numpy as np
from matplotlib import pyplot as plt

A = np.array([[10, 5], [3, 10]], dtype=np.int32)
# 计算每行精度:取对角线元素(正确分类数)除以该行样本总数
row_accuracy = np.diag(A) / A.sum(axis=1)
# 格式化为保留两位小数的字符串,方便显示
accuracy_labels = [f"{acc:.2f}" for acc in row_accuracy]

# 创建包含两个子图的布局:左侧小图用于显示精度,右侧大图绘制热力图
fig, (ax_acc, ax_heatmap) = plt.subplots(ncols=2, figsize=(6, 3), gridspec_kw={'width_ratios': [0.15, 1]})

# 在左侧子图添加精度文本,每行对应一个精度值
for idx, acc_label in enumerate(accuracy_labels):
    ax_acc.text(0.5, idx, acc_label, va='center', ha='center', fontsize=12)
# 隐藏左侧子图的坐标轴,只保留文本
ax_acc.set_xlim(0, 1)
ax_acc.set_ylim(-0.5, len(A)-0.5)
ax_acc.axis('off')

# 绘制热力图,指定子图为右侧的ax_heatmap
sb.heatmap(
        A,
        square=True,
        annot=True,
        xticklabels=["False", "Positive"],
        yticklabels=["False", "Positive"],
        cbar=False,
        fmt="2d",
        ax=ax_heatmap
)

plt.title("Example plot")
plt.tight_layout()
plt.show()

关键步骤说明:

  • 计算每行精度:通过np.diag(A)获取对角线元素(即正确分类的样本数),除以每行的总和得到精度值;
  • 布局设置:使用gridspec_kw调整两个子图的宽度比例,让左侧精度区域更窄;
  • 左侧精度显示:在左侧子图中逐行添加精度文本,隐藏坐标轴让界面更简洁;
  • 热力图关联:将热力图指定到右侧子图,保证整体布局协调。

如果希望精度以百分比形式显示,只需要把accuracy_labels的格式改为f"{acc*100:.1f}%"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:40:44