Pythonでグラフ(Matplotlib)のアニメーションを作る(ArtistAnimation編)

Pythonのmatplotlibを使って、グラフのアニメーションを作ります。ここでは、アニメーションに使うデータをあらかじめ準備しておく方法を説明します。パラパラアニメの要領ですね。

目次

  1. Matplotlibでアニメーションを作る手順
  2. matplotlib.animation.ArtistAnimationクラスの使い方
  3. saveメソッドの使い方
  4. グラフのアニメーションの作成例

Matplotlibでアニメーションを作る手順

  1. Figureコンテナを作る。

  2. プロットするデータを作って、アニメーションに必要な枚数だけコンテナにプロットする。

  3. プロットしたFigureを指定して、ArtistAnimationクラスのインスタンスを作る。

  4. 表示、または保存。

無地の用紙にグラフをプロットしたものを沢山準備しておいて、パラパラめくるようなイメージです。

この記事のサンプルコードでは、GIF出力の際にImageMagickを使用します。この他に、 Pillowを使う方法 や、 OpenCVを使う方法 もあります。

matplotlib.animation.ArtistAnimationクラスの使い方

ArtistAnimationクラスのインスタンスを作ります。

import matplotlib.animation as animation

ani = animation.ArtistAnimation(fig, artists, [interval], [repeat_delay], [repeat], [blit])

変数

内容

fig

Figure

アニメーションにつかう図のインスタンス。

artists

list

アニメーションするデータ。

interval

number

省略可。規定値は200。フレームの切り替え間隔。ミリ秒。

repeat_delay

number

省略可。規定値はNone。リピートするときの切り替え時間。ミリ秒。

repeat

bool

省略可。規定値はTrue。リピートするかどうか。

blit

bool

省略可。規定値はFalse。

ani

ArtistAnimationクラスのインスタンス。

saveメソッドの使い方

アニメーションを保存するためのメソッドです。

ani.save(filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs)

変数

内容

filename

str

出力先ファイル名。

writer

MovieWriterまたはstr

省略可。規定値はシステムの設定による。

fps

number

省略可。規定値はNone。フレーム/秒。

dpi

number

省略可。規定値はシステムの設定による。解像度。

codec

str

省略可。規定値はシステムの設定による。ビデオのコーデック。

bitrate

number

省略可。規定値はシステムの設定による。キロビット/秒。

extra_args

list

省略可。規定値はシステムの設定による。追加の設定。

metadata

dict

省略可。ファイルに記録するメタデータ。

extra_anim

list

省略可。追加するAnimationインスタンス。

savefig_kwargs

dict

省略可。

グラフのアニメーションの作成例

正弦波を少しずつ動かすアニメーションを描いてみます。

Macで実行するのですが、実行前にimagemagickのインストールが必要です。

$ brew install imagemagick

Mac以外の環境ではどうするんだろ。

コードです。

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

fig = plt.figure()

x = np.linspace(0, 2*np.pi, 201)
ims = []
for i in range(100):
    y = np.sin(x + float(i)/50.0)
    im = plt.plot(x,y,'b')
    ims.append(im)

ani = animation.ArtistAnimation(fig, ims, interval=50)

# plt.show() # これを実行するとアニメーションが表示される。

ani.save('animation_test.gif', writer='imagemagick')

imsというリストにpyplot.plotのインスタンスを追加していって、ArtistAnimationコンストラクタに指定するという感じです。

出力されるgifファイルは、このようになります。

グラフのアニメーション

公開日

広告