Logicky BLOG

Logickyの開発ブログです

  • Javascript
  • Python
  • PHP
  • Go
  • OS・サーバ
  • 機械学習
  • つくったもの
  • 数学
  • アルゴリズム
  • Logicky

Python3 - matplotlibでアニメーションGIFをつくる

matplotlib.animatioを使うとアニメーションがつくれます。自分の環境ではgifで保存しようとしたら、imagemagickがなくてエラーになりました。imagemagickのインストールとかはここに書いてありました。

Imagemagick

http://www.imagemagick.org/script/binary-releases.php#windows

Imagemagickのパスをmatplotlibに設定する必要がある。下記のようにするとmatplotlibが見ている設定ファイルの場所がわかる。

import matplotlib
print(matplotlib.matplotlib_fname())

自分はユーザディレクトリ内のAnaconda3の中の下記だった。

Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc

matplotlibrcの最後の行らへんに、下記行があるので、ここにImagemagickのパスを入れる。

#animation.convert_path: 'convert' # Path to ImageMagick's convert binary.

コメントを外して、下記のように入力します。入力の際、パスを「'」で囲むと下記のようなエラーになります。

animation.convert_path: D:\ImageMagick-7.0.4-Q16\magick.exe

C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py:782: UserWarning: MovieWriter imagemagick unavailable warnings.warn("MovieWriter %s unavailable" % writer) Traceback (most recent call last): File "C:/Users/hoge/hoge.py", line 15, in ani.save('sample.gif', writer='imagemagick') File "C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py", line 810, in save writer.grab_frame(**savefig_kwargs) File "C:\Users\hoge\Anaconda3\lib\contextlib.py", line 66, in exit next(self.gen) File "C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py", line 196, in saving self.finish() File "C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py", line 389, in finish + ' Try running with --verbose-debug') RuntimeError: Error creating movie, return code: 1 Try running with --verbose-debug

サンプルコード

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

def anim():
    graphs = []
    fig = plt.figure()
    x = np.arange(-50, 50, 0.1)
    y = x ** 2
    for i in range(50):
        plt.plot(x, y)
        g = plt.plot(i, i ** 2, 'o')
        graphs.append(g)
    ani = animation.ArtistAnimation(fig, graphs, interval=50)
    plt.show()
    ani.save('anim.gif', writer='imagemagick')

if __name__ == '__main__':
    anim()

  • Javascript
  • Python
  • PHP
  • Go
  • OS・サーバ
  • 機械学習
  • つくったもの
  • 数学
  • アルゴリズム
  • Logicky