我在不同的时间水平上有10个点的坐标,我希望加入这些坐标使它看起来像一个轨迹?
def euler_method(points, x_dot, y_dot, x1, x2, time_step, n_steps):
n_points = len(points[:, 0])
point_trajectory = np.zeros((n_points, 2, n_steps))
for i in range(0, n_steps):
point_trajectory[:, :, i] = points
f1 = sp.lambdify((x1, x2), x_dot, "numpy")
f2 = sp.lambdify((x1, x2), y_dot, "numpy")
u = f1(points[:, [0]], points[:, [1]])
v = f2(points[:, [0]], points[:, [1]])
points_new_x = points[:, [0]] + u*time_step
points_new_y = points[:, [1]] + v*time_step
points = np.hstack((points_new_x, points_new_y))
return point_trajectory
def plot_trajectory(points_at_diff_time) - 我想要创建
我无法想象如何表现它。请建议如何操作,最好是在matplotlib中。
编辑:这样的事情 - 在不同时间移动具有不同坐标的点。
答案 0 :(得分:1)
import numpy as np
import matplotlib.pyplot as plt
# make fake data to test with
pt = np.zeros((6, 2, 3)) # 6 points, (x,y), 3 timesteps
pt[:,0] = [-2,-1,1] # x=time, same for all
# set y values
pt[0,1] = [3,4,4.5]
pt[1,1] = [2,2.9,3.4]
pt[2,1] = [1,1.9,2.4]
pt[3,1] = [0,0.6,1.0]
pt[4,1] = [-1.5,-1.6,-1.6]
pt[5,1] = [-2.8,-3.7,-3.8]
# now plot: x and y are 2D
x = pt[:,0].T
y = pt[:,1].T
plt.plot(x, y)
plt.show()
如果您想平滑线条,请参阅此处:https://stackoverflow.com/a/5284038/4323