pythonでのアニメーション作成

次のプログラムは3次元プロットを視点を変えて見る動画を作成するものである。

animateという関数を用意し(名前は別でも良い)、animationというライブラリ関数に与える。

# -*- coding: utf-8 -*
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation

def animate(azim):
    elev = 30.0
    dumm, azim = divmod(azim+1.0, 360.0)
    ax.view_init(elev, azim) # 縦方向の角度と水平方向の角度を与える
    fig.canvas.draw()
    return ax,

# start of main
plt.rcParams['font.size'] = 16
fig = plt.figure()
ax = Axes3D(fig)
a = 10
b = 10
X = np.array([[-a,a],[-a,a]]) # 縦に見て(x,y,z)点を与える。
Y = np.array([[-a,-a],[a,a]])
Z = np.array([[a,a],[-a,-a]])
X1 = np.array([[-b,b],[-b,b]]) # 縦に見て(x,y,z)点を与える。
Y1 = np.array([[-a,-a],[a,a]])
Z1 = np.array([[a,-a],[a,-a]])
ax.plot_surface(X, Y, Z, color='#0000ff', alpha=0.3)
ax.plot_surface(X1, Y1, Z1, color='#ffff00', alpha=0.3)

# instantiate the animator.
anim = animation.FuncAnimation(fig, animate,
                               frames=500, interval=10, blit=True)

#ファイルに書き出すには次のどちらか(ムービービューワによっては実行できないコーデックがある)
#anim.save('animTest.mp4', fps=15, extra_args=['-vcodec', 'libx264']) # good for chrome
anim.save('test2.mp4', fps=15, extra_args=['-vcodec', 'libxvid']) # good for windows media player but no good for chrome

plt.show()

動画サンプル