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

如何使用读取的x、y位置数据在Python中绘制弹跳球运动轨迹?

问题原因

  • 直接报错的根源是计算θ的代码行括号不匹配:
    你代码中的θ.append(float(math.tan(y[i] / x[i]) 行一共使用了3个左括号(分别对应append、float、math.tan三个函数的参数起始),但仅写了1个右括号,缺少2个闭合的右括号,导致Python解析器无法正确识别代码边界,会把后续的plt.plot行当成上一行未结束的内容处理,所以才会在plt.plot行提示语法错误,属于典型的括号不匹配导致的报错行号滞后问题。
  • 额外逻辑问题:如果你要计算的是坐标点对应的仰角,不应该用math.tan(y[i]/x[i]),一是会遇到x=0时的除零报错,二是无法正确识别不同象限的角度,应该用math.atan2(y[i], x[i])直接传入y、x值计算弧度角。

修复方法

把计算θ的循环行补充闭合括号,按需替换角度计算函数即可,参考修正后的完整代码:

import matplotlib.pyplot as plt
import math

filename = 'NewTrackerVid_.txt'
# 用with语句读取文件无需手动关闭,更安全
with open(filename, 'r') as infile:
    line = infile.readline() # 跳过首行
    t = []
    x = []
    y = []
    for line in infile:
        words = line.split()
        t.append(float(words[0]))
        x.append(float(words[1]))
        y.append(float(words[2]))

θ = []
for i in range(len(x)):
    # 补充2个右括号,替换为atan2计算角度
    θ.append(math.atan2(y[i], x[i]))

plt.plot(t, θ)
plt.xlabel('t')
plt.ylabel('θ')
plt.title("Trajectory vs Time")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:57:03