如何自定义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
相关产品推荐
相关产品推荐

