Translate

matplotlibでgifデータを作る方法

 こんにちは。

今回は、pythonのmatplotlibを使って動くグラフを作ることをやってみましょう。matplotlibのplot やscatterを組み合わせることでグラフをより分かりやすく視覚化することができます。

動画ファイルを作るとなるとなかなか難しいと思いがちですが、意外と簡単に処理することができます。

それでは早速やってみましょう。

使うのは matplotlib.animationというモジュール



まずはお決まりのインポートからですね。

import matplotlib.pyplot as plt

import matplotlib.animation as animation

この二文は基本ですね。

今回はmatplotlibのanimationの機能を使ってgifデータを作っていきます。

アニメーションの作り方としては、forループを使用して各周期ごとにグラフの画像を保存して、それを最終的にgifにするという処理になります。

これをするためには、最初に各周期ごとのグラフの画像を保存するための空のリストの変数を作成します。


実際のコードはこんな感じです。適当にscatterとplotを入れるものになっております。

fig = plt.figure(figsize = (10,10))

ax = fig.add_subplot(111)

 ims = []

 for n in range (10):

          i1 = ax.scatter(n,n)

          i2 = ax.plot(n,n)

          ims.append([i1,i2[0]])

 ani = animation.ArtistAnimation(fig, ims)    

ani.save('result.gif', writer='pillow',dpi=100)         

それぞれの折れ線グラフ、散布図のグラフをi1、i2という名前の変数に格納します。そしてそれをループ外のimsの空のリストに最終的に格納します。注意したいのは、格納する際に、plotの場合には後ろに[0]をつける必要があるという点です。これは、scatter とplotのリストの構造が違うためです。

ループが終わった後には、imsのリストに保存されたデータを利用して、matplotlib.animationのモジュールを使用して、gifを作成します。gifの作成に際してpillowというパッケージが必要になることがあるので、もしエラーを吐いた場合には、anaconda plompt上でpip install pillowのコードを入力して、パッケージを取得しましょう。

簡単なgifの作り方はこんな感じになります。