Manish - 1 year ago 71

Python Question

I have the coordinates of say 10 points at different time levels and I wish to join those coordinates to make it look like a trajectory?

`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

I am not able to think how to represent it. Please suggest how to do it, preferably in matplotlib.

EDIT: Something like this - moving points with different coordinates at different times.

Answer Source

```
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()
```

If you want to smooth the lines, see here: http://stackoverflow.com/a/5284038/4323