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

Python使用matplotlib绘制抛体运动高度角度图仅显示空白无折线问题

问题原因及修正方案
  • 仅传入单个角度、单个计算值调用plt.plot():plot默认绘制折线,单个点无连续线段自然显示空白,额外对数值做int强制转换还会丢失精度
  • 未生成多组角度序列:要绘制高度、射程随角度变化的趋势图,需要覆盖0~90度的全范围角度数据,仅单组输入无法生成变化曲线
  • 物理公式错误:
    1. 最大高度正确公式为 $H = \frac{V_0^2 \cdot sin2\theta}{2g}$,原代码中错误对角度做平方运算,且分母误用$g2$
    2. 射程正确公式为 $R = \frac{V_0^2 \cdot sin2\theta}{g}$,原代码遗漏sin内的2倍角度参数
  • 坐标轴映射错误:要绘制参数随角度变化的曲线,x轴应为角度值,y轴为对应的高度/射程值,原代码写反了x、y入参顺序
修正后可运行代码
import matplotlib.pyplot as plt
import numpy as np

def projectile(Vo, input_angle):
    Acc = 9.8
    # 生成0到90度的角度序列,步长1度
    angle_arr = np.arange(0, 91, 1)
    # 按正确公式批量计算最大高度、射程
    height_arr = (Vo ** 2) * (np.sin(np.radians(angle_arr)) ** 2) / (2 * Acc)
    range_arr = (Vo ** 2) * np.sin(np.radians(2 * angle_arr)) / Acc
    
    # 绘制两条曲线,加标签区分
    plt.plot(angle_arr, height_arr, label='最大高度')
    plt.plot(angle_arr, range_arr, label='射程')
    # 添加图表标注
    plt.xlabel('抛射角度(度)')
    plt.ylabel('数值(米)')
    plt.title(f'初速度{Vo}m/s下抛体运动参数随角度变化')
    plt.legend()
    plt.grid()
    plt.show()
    
    # 返回指定角度对应的计算值
    return ("Maximum Height: ", height_arr[input_angle], "Maximum Range: ", range_arr[input_angle])

# 主逻辑
Vo = int(input("Enter Velocity: "))
Angle = int(input("Enter Angle: "))
print(projectile(Vo, Angle))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:06