matplotlib

【Python,matplotlib】動くグラフをAnimationGifに保存する方法

matplotlibで動くグラフを書いて、AnimationGifに保存するにはImageMagickという画像のソフトをmatplotlibから呼び出すように設定すれば、こんな風な動くグラフが作成できます。

matplotlib AnimationGif

 

まずはImageMagickの入手から。

ImageMagickは下記ページより、ダウンロードします。

ImageMagick
Create, Edit, Compose, or Convert Digital Images

matplotlib AnimationGif

 

Windows版のファイルは下の方にあるので、downloadをクリックしてファイル(ImageMagick-7.0.6-0-Q16-x64-dll.exe)を入手します。

matplotlib AnimationGif

 

ImageMagickのインストールはダウンロードしたファイルを実行し、基本デフォルトのままのインストールで大丈夫だと思います。

matplotlib AnimationGif

 

ImageMagickのインストールが出来たら、matplotlibの設定を行います。

 

まず、matplotlibのmatplotlibrcというファイルがある場所を確認します。

場所はPythonのプログラムで

 

import matplotlib
print(matplotlib.matplotlib_fname())

 

と入力し実行すると、matplotlibrcのファイルのパスが表示されるので、matplotlibrcファイルをメモ帳などのテキストエディタで開きます。

 

matplotlib AnimationGif

私の場合のパスは

C:\Program Files\Anaconda3\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

でした。

 

このmatplotlibrcファイルの一番下の方に

 

#animation.convert_path: ‘convert’ #・・・・・・

と書いてある部分があるので、これを編集してもいいのですが、私は↓のようにImageMagickの実行ファイル(magick.exe)のパスを追記しました。

matplotlib AnimationGif

 

この状態で、このようなコード↓を書くと、最初に示したアニメーションGifのファイルが生成されます。

 

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

fig = plt.figure()
x = np.arange(-np.pi, np.pi, 0.1)

ims = []
for a in range(40):
    y = np.sin(x - a / 20 *  np.pi)
    # sinカーブ
    im1, = plt.plot(x, y, "b")
    # 点
    im2, = plt.plot(-np.pi, np.sin(-np.pi - a / 20 *  np.pi), marker='o', color='b' )

    ims.append([im1, im2])

ani = animation.ArtistAnimation(fig, ims, interval=33)
ani.save('sample.gif', writer='imagemagick')

 

Sinカーブだけのサンプルは探せばいっぱいあるのですが、線上に点を打つだけでも、訳わかんなかった~(まだ、分かってないですけど。。)

コメント

タイトルとURLをコピーしました