'Animate points with matplotlib

I want to have 10 moving points. I used the code below. I'm experimenting with matplotlib which I don't know very well.

from matplotlib import pyplot as plt
import numpy as np
from matplotlib import animation

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

# second option - move the point position at every frame
def update_point(n, x, y, z, point):
    point.set_data(np.array([x[n], y[n]]))
    point.set_3d_properties(z[n], 'z')
    return point

def x(i):
    return np.cos(t*i)

for i in range(10):
    t=np.arange(0, 2*np.pi, 2*np.pi/100)
    y=np.sin(t)
    z=t/(2.*np.pi)
    point, = ax.plot([x(i)[0]], [y[0]], [z[0]], 'o')
    ani=animation.FuncAnimation(fig, update_point, 99, fargs=(x(i), y, z, point))

ax.legend()
ax.set_xlim([-1.5, 1.5])
ax.set_ylim([-1.5, 1.5])
ax.set_zlim([-1.5, 1.5])

plt.show()

I hoped that if I turn x to a function of i, then I will have 10 points in the for loop, but nothing happened. Only one point is moving. What am I doing wrong?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source