Animación 3D utilizando matplotlib

Quiero hacer animación 3D con matplotlib, pero no sé cómo hacerlo. Aquí está mi código que no funciona.

from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D from matplotlib import animation from math import * fig = plt.figure() ax = fig.add_subplot(111) #, projection='3d' #setting ax.set_xlim(-5,5) ax.set_ylim(-5,5) #ax.set_zlim(-5,5) ax.set_xlabel('x') ax.set_ylabel('y') #ax.set_zlabel('z') ax.grid() f1, = ax.plot([], [], "r-", lw=1) #plot1 def gen(): for phi in np.linspace(0,2*pi,100): yield np.cos(phi), np.sin(phi), phi def update(data): p1, q1, psi = data f1.set_data(p1,q1) #f1.set_3d_properties(psi) ani = animation.FuncAnimation(fig, update, gen, blit=False, interval=100, repeat=True) #ani.save('matplot003.gif', writer='imagemgick') plt.show() 

Utilicé este ejemplo http://matplotlib.org/1.4.1/examples/animation/simple_3danim.html y modifiqué su código:

 from matplotlib import pyplot as plt import numpy as np import mpl_toolkits.mplot3d.axes3d as p3 from matplotlib import animation fig = plt.figure() ax = p3.Axes3D(fig) def gen(n): phi = 0 while phi < 2*np.pi: yield np.array([np.cos(phi), np.sin(phi), phi]) phi += 2*np.pi/n def update(num, data, line): line.set_data(data[:2, :num]) line.set_3d_properties(data[2, :num]) N = 100 data = np.array(list(gen(N))).T line, = ax.plot(data[0, 0:1], data[1, 0:1], data[2, 0:1]) # Setting the axes properties ax.set_xlim3d([-1.0, 1.0]) ax.set_xlabel('X') ax.set_ylim3d([-1.0, 1.0]) ax.set_ylabel('Y') ax.set_zlim3d([0.0, 10.0]) ax.set_zlabel('Z') ani = animation.FuncAnimation(fig, update, N, fargs=(data, line), interval=10000/N, blit=False) #ani.save('matplot003.gif', writer='imagemagick') plt.show()