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

如何按误差上下限而非误差长度绘制matplotlib errorbar误差棒

plt.errorbar() 传入绝对误差端点的实现方案

结论:不能直接传入误差棒的绝对端点值调用plt.errorbar()。
该方法的误差参数默认接收的是相对于测量点y值的偏移长度,而非坐标轴上的绝对端点坐标,但只需要一步简单的数值转换就能实现你需要的效果:

  • plt.errorbar()的非对称误差参数yerr要求传入形状为(2, N)的序列:第一组值是每个数据点向下延伸的误差长度(测量点y值到误差棒下端点的距离),第二组值是每个数据点向上延伸的误差长度(测量点y值到误差棒上端点的距离)。
  • 针对你给出的数据集,只需要提前计算出上下偏移量即可:
# 原始测量数据
x = [1, 2, 3, 4]
y = [10, 9, 8, 7]
# 误差棒绝对上下端点
y_lower = [6, 5, 3, 6.5]
y_upper = [12, 10.5, 9, 7]

# 转换为方法要求的偏移长度格式
down_err = [yi - yl for yi, yl in zip(y, y_lower)]
up_err = [yu - yi for yi, yu in zip(y, y_upper)]
yerr = [down_err, up_err]

转换完成后直接调用绘图方法即可,绘制出的误差棒就会严格落在你给定的y_lower到y_upper区间内:

import matplotlib.pyplot as plt

# 绘制带误差棒的散点/折线,capsize设置误差棒端点横杠长度
plt.errorbar(x, y, yerr=yerr, fmt='o', capsize=4)
plt.show()

注意:计算偏移量时如果出现负值,说明你给定的端点位置不符合y_lower <= y <= y_upper的逻辑,误差棒会向反方向延伸,需要提前检查端点数据合理性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:48:22