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

Matplotlib Y轴数据显示异常求助:条形图超出数据范围

Matplotlib条形图Y轴显示异常问题解决

你遇到的Y轴显示异常,本质是两个问题:

  1. 手动设置的ylim(0,2)没生效,反而显示0.5-1.0的范围
  2. Y轴出现了1.0,但你误以为数据里没有这个值

问题原因

  • 你把ax.set_ylim(0, 2)放在了绘制条形图的代码前面,Matplotlib默认会自动调整坐标轴范围以适配所有绘制元素,所以你提前设置的范围被自动覆盖了。
  • Y轴出现1.0是因为条形的顶部是bottom + height,计算后第一个条形的顶部为0.5002 + 0.5047 ≈ 1.0049,刚好超过1.0,其他条形的顶部也接近1.0,所以自动缩放后的Y轴上限就被设为了1.0。

解决方法

方法1:调整代码顺序,把ylim设置放在绘图之后

手动设置的范围会覆盖自动缩放的结果:

fig, ax = plt.subplots()

x = [0, 1, 2, 3, 4]
height = [0.5047, 0.4999, 0.4985, 0.4999, 0.4987]
bottom = [0.5002, 0.4969, 0.4956, 0.4969, 0.4967]

# 先绘制条形图
ax.bar(x=x, height=height, width=0.2, bottom=bottom)
# 再设置Y轴范围
ax.set_ylim(0, 2)

plt.show()

方法2:关闭自动缩放,强制保留手动设置的范围

在设置ylim之后关闭自动缩放,绘图时就不会修改你设置的坐标轴范围:

fig, ax = plt.subplots()

x = [0, 1, 2, 3, 4]
height = [0.5047, 0.4999, 0.4985, 0.4999, 0.4987]
bottom = [0.5002, 0.4969, 0.4956, 0.4969, 0.4967]

ax.set_ylim(0, 2)
# 关闭自动缩放
ax.autoscale(False)
# 再绘制条形图
ax.bar(x=x, height=height, width=0.2, bottom=bottom)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:42:51