%pylab fig, ax = plt.subplots() x = np.linspace(0, 10, 1000) lines = ax.plot(x, np.sin(x), lw=2) for i in range(100): lines[0].set_ydata(np.sin(x + 0.1 * i)) fig.canvas.draw() import matplotlib.pyplot as plt import numpy as np # First set up the figure, the axis, and the plot element we want to animate fig = plt.figure() ax = plt.axes(xlim=(0, 2), ylim=(-2, 2)) line, = ax.plot([], [], lw=2) # initialization function: plot the background of each frame def init(): line.set_data([], []) return line, # animation function. This is called sequentially x = np.linspace(0, 2, 1000) def animate(i): y = np.sin(2 * np.pi * (x - 0.01 * i)) line.set_data(x, y) return line, from matplotlib import animation # call the animator. blit=True means only re-draw the parts that have changed. anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=True) anim.save('basic_animation.mp4', fps=30) import numpy as np from scipy import integrate # define the lorenz derivatives def lorenz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0): """Compute the time-derivative of a Lorenz system.""" return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z] # Choose random starting points, uniformly distributed from -15 to 15 N_trajectories = 20 np.random.seed(1) x0 = -15 + 30 * np.random.random((N_trajectories, 3)) # Solve for the trajectories t = np.linspace(0, 4, 1000) x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t) for x0i in x0]) from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1], projection='3d') # choose a different color for each trajectory colors = plt.cm.jet(np.linspace(0, 1, N_trajectories)) for i in range(N_trajectories): x, y, z = x_t[i].T ax.plot(x, y, z, c=colors[i]) from mpl_toolkits.mplot3d import Axes3D # Set up figure & 3D axis for animation fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1], projection='3d') ax.axis('off') # choose a different color for each trajectory colors = plt.cm.jet(np.linspace(0, 1, N_trajectories)) # set up lines and points lines = [] pts = [] for c in colors: lines += ax.plot([], [], [], '-', c=c) pts += ax.plot([], [], [], 'o', c=c) # prepare the axes limits ax.set_xlim((-25, 25)) ax.set_ylim((-35, 35)) ax.set_zlim((5, 55)) # set point-of-view: specified by (altitude degrees, azimuth degrees) ax.view_init(30, 0) # initialization function: plot the background of each frame def init(): for line, pt in zip(lines, pts): line.set_data([], []) line.set_3d_properties([]) pt.set_data([], []) pt.set_3d_properties([]) return lines + pts # animation function. This will be called sequentially with the frame number def animate(i): # we'll step two time-steps per frame. This leads to nice results. i = (2 * i) % x_t.shape[1] for line, pt, xi in zip(lines, pts, x_t): x, y, z = xi[:i].T line.set_data(x, y) line.set_3d_properties(z) pt.set_data(x[-1:], y[-1:]) pt.set_3d_properties(z[-1:]) # rotate the point of view ax.view_init(30, 0.3 * i) fig.canvas.draw() return lines + pts # instantiate the animator. anim = animation.FuncAnimation(fig, animate, init_func=init, frames=500, interval=30, blit=True) # Save as mp4. This requires mplayer or ffmpeg to be installed #anim.save('lorenz_attractor.mp4', fps=15, extra_args=['-vcodec', 'libx264']) %run ../examples/double_pendulum.py %run ../examples/particle_box.py %run ../examples/animate_schrodinger.py