Pythonでグラフ(Matplotlib)のアニメーションを作る(ArtistAnimation編)
Pythonのmatplotlibを使って、グラフのアニメーションを作ります。ここでは、アニメーションに使うデータをあらかじめ準備しておく方法を説明します。パラパラアニメの要領ですね。
目次
Matplotlibでアニメーションを作る手順
Figureコンテナを作る。
プロットするデータを作って、アニメーションに必要な枚数だけコンテナにプロットする。
プロットしたFigureを指定して、ArtistAnimationクラスのインスタンスを作る。
表示、または保存。
無地の用紙にグラフをプロットしたものを沢山準備しておいて、パラパラめくるようなイメージです。
この記事のサンプルコードでは、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ファイルは、このようになります。
公開日
広告
Pythonでグラフカテゴリの投稿
- Pythonで3Dグラフを描く
- PythonでGIFアニメを作る(PILでアニメーションファイルを出力編)
- Pythonでグラフのアニメを作る(OpenCVでmp4ファイルを出力編)
- Pythonでグラフのコンテナを作る
- Pythonでグラフを描く
- Pythonでグラフ(Matplotlib)のアニメーションを作る(ArtistAnimation編)
- Pythonでグラフ(Matplotlib)のアニメーションを作る(FuncAnimation編)
- PythonのMatplotlibのグラフに領域を指示して最大値と最小値を取得する
- PythonのMatplotlibのグラフに領域を指示して最大値と最小値を取得する(GUI版)
- PythonのMatplotlibのグラフをNumPy行列に変換してOpenCVやPillowで使う
- Pythonのグラフのひな形