如何在几个时刻从坐标为我所知的点绘制轨迹?

时间:2016-08-07 17:07:32

标签: python numpy

我在不同的时间水平上有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中。

编辑:这样的事情 - 在不同时间移动具有不同坐标的点。

enter image description here

1 个答案:

答案 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()

resulting plot

如果您想平滑线条,请参阅此处:https://stackoverflow.com/a/5284038/4323