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

Python matplotlib如何绘制含最小/最大/当前值的误差棒

问题:仅用Max/Min/Current三个值绘制指定误差棒

需求说明

实现仅传入3个数值即可绘制对应误差棒的效果,示例参数如下:

  • Max = 20
  • Min = 10
  • Current = 15

预期效果参考:
效果示例图

原有代码问题

原有代码如下,运行结果不符合预期:

ax.errorbar([0,1], [10,20], yerr=15, fmt='o', color='black',
             ecolor='lightgray', elinewidth=3, capsize=0);

原有代码运行结果:
运行结果图

核心错误点:

  • 对ax.errorbar的参数逻辑理解偏差:函数第二个位置参数是标记点的y坐标(即Current值),不是误差范围的端点;yerr参数接收的是标记点到误差上下界的距离,不是当前值本身。
  • 原代码传入了2组x、y坐标[0,1]、[10,20],相当于绘制了两个独立的带误差棒的散点,而非单根从Min延伸到Max、中间标记Current的误差棒。

修正方案

首先计算误差长度:

  • 下误差长度 = Current - Min
  • 上误差长度 = Max - Current
    yerr参数需传入二维结构,第一行为各点的下误差长度,第二行为各点的上误差长度;因为仅绘制单根误差棒,x坐标传入单个值即可。

完整可运行代码:

import matplotlib.pyplot as plt

# 三个输入参数
Max = 20
Min = 10
Current = 15

fig, ax = plt.subplots()
# 计算上下误差距离
lower_error = Current - Min
upper_error = Max - Current

ax.errorbar(
    x=0,
    y=Current,
    yerr=[[lower_error], [upper_error]],
    fmt='o',
    color='black',
    ecolor='lightgray',
    elinewidth=3,
    capsize=0
)

# 可选配置:隐藏x轴刻度,匹配示例视觉效果
ax.set_xticks([])
plt.show()

运行后即可得到预期效果:单根浅灰色竖线从Min值位置延伸到Max值位置,中间Current值位置显示黑色标记点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:45:42