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

如何自定义matplotlib误差棒并标注点及添加MAE、MSE等误差指标

实现方案

1. 误差棒添加数据点标识方案

直接在errorbar接口配置参数即可实现:

  • 新增fmt参数指定数据点样式,比如fmt='o'代表实心圆点,也可以搭配颜色使用,比如fmt='bo'就是蓝色实心圆点
  • 如果需要给每个点添加自定义文本标注,逐点调用plt.text()即可,坐标取对应点的x/y值,加小幅偏移避免遮挡数据点

2. 四项指标信息添加方案

建议使用相对坐标放置指标文本,避免画布缩放后位置错乱,同时可以加半透明背景防止被图线遮挡:

  • 用transform=ax.transAxes参数启用相对坐标系,取值范围0~1,比如(0.95, 0.95)就对应画布右上角位置
  • 多个指标用\n换行整合到同一个文本块里即可

完整可运行示例代码

import matplotlib.pyplot as plt
import numpy as np

# 替换为你自己的实际数据即可
x = np.arange(3)  # 3组样本的x轴坐标
y_pred = np.array([2.3, 3.3, 4.5])  # 预测值
error = np.array([0.2, 0.15, 0.18])  # 误差棒长度,可替换为你计算的标准差
point_labels = ["样本1", "样本2", "样本3"]  # 每个点的自定义标注内容

# 你已经计算完成的四项指标
mae = 0.217
mse = 0.049
err_mean = 0.067
err_std = 0.232

fig, ax = plt.subplots(figsize=(8, 5))
# 绘制误差棒,capsize参数添加误差棒两端横杠
ax.errorbar(x, y_pred, yerr=error, fmt='bo', capsize=5, label='预测值')

# 逐个添加点标注
for xi, yi, label in zip(x, y_pred, point_labels):
    ax.text(xi, yi + 0.05, label, ha='center', fontsize=10)

# 添加四项指标文本
info_text = f"MAE: {mae:.3f}\nMSE: {mse:.3f}\n误差均值: {err_mean:.3f}\n误差标准差: {err_std:.3f}"
ax.text(0.95, 0.95, info_text, transform=ax.transAxes,
        ha='right', va='top',
        bbox=dict(facecolor='white', alpha=0.8, pad=5))

# 基础图配置,可根据需求调整
ax.set_xticks(x)
ax.set_xticklabels(["第一组", "第二组", "第三组"])
ax.set_ylabel("数值")
ax.legend()
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:00