[2-1] 動画作成用のモジュールをインポートして、動画を表示可能なモードにセットします。


In [1]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
%matplotlib nbagg

[2-2] x軸方向に移動しながら、y軸方向に落下する物体の動きを描きます。

動画のGIFファイル「animation03.gif」も同時に作成します。


In [2]:
fig = plt.figure(figsize=(4,4))

x = 0
y, vy = 0, 0

images = []
for _ in range(25):
    image = plt.scatter([x],[y])
    images.append([image])
    x += 1
    y += vy
    vy -= 1

ani = animation.ArtistAnimation(fig, images, interval=100)
ani.save('animation03.gif', writer='imagemagick', fps=25)


[2-3] 斜め上に投げ上げた物体の動きを描きます。

動画のGIFファイル「animation04.gif」も同時に作成します。


In [3]:
fig = plt.figure(figsize=(4,4))

x = 0
y, vy = 0, 10

images = []
for _ in range(22):
    image = plt.scatter([x],[y])
    images.append([image])
    y += vy
    vy -= 1
    x += 1
ani = animation.ArtistAnimation(fig, images, interval=100)
ani.save('animation04.gif', writer='imagemagick', fps=25)


[2-4] 「モンキーハンティング」の問題を動画で再現します。

動画のGIFファイル「animation05.gif」も同時に作成します。


In [4]:
fig = plt.figure(figsize=(4,4))

x1, y1 = 0, 0
vx1, vy1 = 20, 20
y2, vy2 = 500, 0

images = []
for _ in range(50):
    image = plt.scatter([x1, 500],[y1, y2])
    images.append([image])
    x1 += vx1
    y1 += vy1
    y2 += vy2
    vy1 -= 1
    vy2 -= 1

ani = animation.ArtistAnimation(fig, images, interval=100)
ani.save('animation05.gif', writer='imagemagick', fps=25)


[2-5] 「打ち上げ花火」を動画で再現します。

動画のGIFファイル「animation06.gif」も同時に作成します。


In [5]:
fig = plt.figure(figsize=(5,5))
plt.xticks([])
plt.yticks([])
plt.xlim(-1500,1500)
plt.ylim(-2200,800)
num = 20
x, y, vx, vy = [], [], [], []
for i in range(num):
    x.append(0)
    y.append(0)
    vx.append(20*np.cos(2*np.pi*i/num))
    vy.append(20*np.sin(2*np.pi*i/num))

images = []
for _ in range(110):
    xs, ys = [], []
    for i in range(num):
        xs.append(x[i])
        ys.append(y[i])
        x[i] += vx[i]
        y[i] += vy[i]
        vy[i] -= 1
    image = plt.scatter(xs, ys)
    images.append([image])

ani = animation.ArtistAnimation(fig, images, interval=20)
ani.save('animation06.gif', writer='imagemagick', fps=25)