我正在尝试使用matplotlib绘制特定路线(随时间加速)。该图表到目前为止工作正在显示(见图)。 J等于35并且表示加速度随时间的导数(在这种情况下是常数)。
import numpy as np
import matplotlib.pyplot as plt
def limits_acc_course():
limits_acc_course.t1 = 0.14285714285714285
limits_acc_course.t2 = 0.14285714285714285 + 0.10714285714285715
limits_acc_course.t3 = 2*0.14285714285714285 + 0.10714285714285715
limits_acc_course.t4 = 2*0.14285714285714285 + 0.10714285714285715 + 0.5*0.24714285714285716
limits_acc_course()
t_end = 2*limits_acc_course.t4
t_1 = np.linspace(0, limits_acc_course.t1)
t_2 = np.linspace(limits_acc_course.t1, limits_acc_course.t2)
t_3 = np.linspace(limits_acc_course.t2, limits_acc_course.t3)
t_4 = np.linspace(limits_acc_course.t3, limits_acc_course.t4)
tk1 = np.array([])
tk2 = np.array([])
tk3 = np.array([])
tk4 = np.array([])
for value1 in t_1:
tk1 = np.append(tk1, value1*j)
for value2 in t_2:
tk2 = np.append(tk2, limits_acc_course.t1*j)
for value3 in t_3:
tk3 = np.append(tk3, (limits_acc_course.t3-value3)*j)
for value4 in t_4:
tk4 = np.append(tk4, value4*0)
if value4 == (2*limits_acc_course.t4-limits_acc_course.t3)*j:
break
t = np.concatenate((tk1, tk2, tk3, tk4), axis=0)
t_neg = (-1)*np.concatenate((tk1, tk2, tk3), axis=0)
t_final = np.concatenate((t, t_neg), axis=0)
t_range = np.linspace(0, t_end, t_final.size)
fig, t = plt.subplots()
t.plot(t_range, t_final)
t.get_xaxis().get_major_formatter().set_useOffset(False)
plt.show()
问题是绘图中的x坐标与计算值不匹配。
图中的x值(见图))应为: 0.142857142857 0.25 (或至少具有这样的准确度:0.1429)
图中的x值是。 0.144777 0.295348
我试图关闭偏移量,我已经玩了每个部分100到2500个值的范围,我试图对值进行舍入,但它也没有用。此外,我尝试在创建范围t_1到t_4时使用endpoint = False。
到现在为止,我已经没有了想法。
答案 0 :(得分:0)
在一个轴上创建绘图,该轴将在屏幕上超过~500像素。 x轴显示1.1个单位。因此,每像素有1.1 / 500 = 0.0022个单位。鼠标光标无法知道其位置比1像素更准确。因此,鼠标光标显示的坐标精确到〜±0.0022单位。
观测坐标(0.144777)偏离实际坐标(0.142857142857)0.0019单位,完全在光标精度范围内。