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

matplotlib绘图仅最后一个Y值正常其余均显示为0,打印数据正确如何解决?

问题原因
  • 你生成的theta数组最后一个值为精确的$\pi/2$,此时$\cos(\pi/2)$趋近于0,导致计算得到的Y数组最后一个元素是极小的负异常值(数量级约为$-10^{33}$),和其他Y值的个位数量级差距极大。
  • 调用plt.ylim(top=max(Y),bottom=min(Y))时,y轴范围被这个异常值拉到了极大的跨度,所有正常Y值在这个跨度下几乎和Y=0齐平,就出现了你看到的“除最后一个点外其他Y值都显示为0”的现象。
修复方案

方案1:避免生成边界异常值

生成theta数组时不包含$\pi/2$端点,修改对应代码即可:

theta=np.linspace(0,0.5*math.pi,n_iter, endpoint=False)

方案2:设置轴范围时排除异常值

如果需要保留原theta数组,计算轴上下限时跳过最后一个异常值:

plt.ylim(top=max(Y[:-1]),bottom=min(Y[:-1]))
额外优化建议

可以用numpy向量化运算替换for循环,代码更简洁、运行效率更高,计算结果和原循环完全一致:

# 直接替换整个for循环块即可
Y = np.tan(theta)*x - g/(2*(v*np.cos(theta))**2)*x**2 + y0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:24:03