PythonでアニメーションGIFと動画を簡単に作成する方法

PythonでアニメーションGIFと動画を簡単に作成する方法 プログラミング

いきなりですが、次のような動画を見たことがありませんか?
YouTubeでよく見かけるようになりました。

Pythonで簡単に作った人口密度のバーチャートレース(世界の都市)

これは、バーチャートレースと言われています。
レースと表現されるのは、棒グラフが競い合うように見えるからでしょうね。

そして、YouTubeで見かけるバーチャートレースの多くは、Flourishで作られたモノのようです。
Flourishは、グラフ作成サービスです。

このようなサービスを利用するのも一つの手段だと思います。
しかし、無料のサービス依存は危険です。
いつサービスが、閉鎖するかもしれません。

「それなら、作ってやろう!!」と言うのがプログラマーです。
そのように考えた人が、簡単に検証までできるようにまとめました。

本記事の内容

  • PythonでアニメーションGIFと動画を作成するための環境
  • Matplotlibの設定ファイルの確認
  • FFmpegのダウンロード・インストール
  • ImageMagickのダウンロード・インストール
  • PythonでアニメーションGIFをつくる
  • Pythonで動画をつくる

それでは、上記の内容に沿って説明を行っていきます。

PythonでアニメーションGIFと動画を作成するための環境

今回の記事内で用いた環境は、次の通りです。

  • Windows 10 Home (バージョン1909)※以下の説明は64bit前提
  • Python 3.7.3
  • NumPy 1.18.5
  • Matplotlib 3.2.1
  • FFmpeg 4.2.3
  • ImageMagick-7.0.10-18

NumPyとMatplotlibは、インストール前提で説明を進めます。
Pythonと言えば、 NumPyとMatplotlibでしょうから。

Matplotlibの設定ファイルの確認

Matplotlibはすでにインストール済みを想定しています。
一応、インストールコマンドを載せておきます。

pip install matplotlib

ここで重要なのは、Matplotlibの設定ファイルです。
設定ファイルは次のプログラムで探します。

import matplotlib
print(matplotlib.matplotlib_fname())

これを実行すれば、以下のパスが表示されます。
~\site-packages\matplotlib\mpl-data\matplotlibrc

matplotlibrcがMatplotlibの設定ファイルです。
とりあえず、今はここまでとします。
「ImageMagickのインストール」で、matplotlibrcに変更を加えます。

FFmpegのダウンロード・インストール

FFmpegのダウンロード

公式サイトへアクセスします。
https://ffmpeg.zeranoe.com/builds/

バージョンを安定版で最新のものに変更します。
初期ではgitのバージョンが、指定されています。
しかし、さすがにそこまで最新は必要ありません。

画面の最下部にスクロールします。

Nameが「ffmpeg-4.2.3-win64-static.zip」であることを確認。
確認して問題なければ、「Download Build」をクリック。

ダウンロードが完了したら、zipを適当な場所で解凍します。
フォルダ名をffmpegに変更しておきましょう。

FFmpegのインストール

インストール作業自体は、必要ではありません。
しかし、ダウロードしたバイナリにパスを通す必要があります。

パスを通すの対象は、「ffmpeg.exe」です。
私の環境では、次のパスを設定します。
C:\soft\ffmpeg\bin\

環境変数の設定方法に関しては、ここでは説明しません。
なお、登録はシステム環境変数の方でしておきます。

ちなみに、上の画面を簡単に立ち上げる方法があります。
複数方法はあります。
私は、以下のボックスに「sysdm.cpl」と入力してEnterで立ち上げます。

ImageMagickのダウンロード・インストール

ImageMagickのダウンロード

公式サイトへアクセスします。
http://www.imagemagick.org/script/download.php#windows

ImageMagick-7.0.10-18-portable-Q16-x64.zipをダウンロードします。
HTTPからでよいでしょう。

ダウンロードが完了したら、zipを適当な場所で解凍します。
フォルダ名をimagemagickに変更しておきましょう。

私の環境では、exeファイルのパスは以下となります。
C:\soft\imagemagick\magick.exe
exeファイルのパスということを覚えておいてください。

ImageMagickのインストール

インストール作業自体は、必要ではありません。
レジストリを汚したり、無駄なパスを増やしたくありません。

ただ、パスを通す必要があります。
しかし、FFmpegとは異なり、環境変数への追加は必要ありません

その代り、Matplotlibの設定ファイルにパスを設定しなければなりません。
こちらの方が、明示的に管理できますね。

Matplotlibの設定ファイルは、上述の「Matplotlibの設定ファイルの確認」で確認しました。
そのmatplotlibrcをエディターで開きます。

最終行に以下の行を追加しています。
animation.convert_path: C:\soft\imagemagick\magick.exe

exeファイルのパスは、上記で説明しています。
覚えておいてくださいと言いましたね。

PythonでアニメーションGIFをつくる

Anacondaで開発している場合は、Anacondaを再起動しておきましょう。
Matplotlibの設定ファイルの変更が、反映されていない場合もありえます。

次が、アニメーションGIFを作成するコードです。

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

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

作成されたanim.gifです。

あっけなくアニメーションGIFが作成できましたね。
それでは、次は動画の作成です。

Pythonで動画をつくる

次が、動画を作成するコードです。

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

graphs = []
fig = plt.figure()
x = np.arange(-30, 30, 0.2)
y = x ** 2
for i in range(30):
    plt.plot(x, y)
    g = plt.plot(i, i ** 2, 'o')
    graphs.append(g)
anim = animation.ArtistAnimation(fig, graphs, interval=300)
plt.show()
anim.save('anim.mp4', writer='ffmpeg')

作成されたanim.mp4です

あっけなく動画も作成できました。
「Pythonで動画をつくる」は、以上です。

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