【Python】グラフをアニメーション化してみた

この記事をシェアする
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

はじめに

以前にRのggplot2を用いてアニメーションをしたことはあるのですが、今回はPythonでやってみたいと思います。

www.medicalmed.press

 matplotlibのアニメーションにはArtistAnimationとFuncAnimationがある

動的か静的かの違いです。

FuncAnimationはグラフをその場でアニメーション化してくれる関数です。

ArtistAnimationはあらかじめ用意した画像をひとつのフレームに入れて、1枚ずつ描画してアニメーションを作っていく関数です。

今回はArtistAnimation関数を使用してアニメーションを作っていきたいと思います。

 

アニメーションを作っていこう!

ターミナルを起動させてnumpyやらmatplotlibをインポートしておきます。

f:id:Medicmed:20180428122159p:plain

最初に空のリストを作成しておく

空のリストに、作成したプロット画像(プロット画像のデータ型はリスト型)を入れていきます。

f:id:Medicmed:20180428123237p:plain

プロット画像のデータ型もリストなので、リストの中にリストを入れていくことになります。

plot.hist()だったりするとデータ型がtupleになってlistに変換したとしても「dtype Narrays not attribute set_visible」みたいなErorrを吐かれるのでアニメーション化できませんでした。

matplotlibの何のグラフをアニメーション化できるかは色々試して見たほうが良いと思います!

その場でアニメーションを表示したかったらplt.show()をgif保存するならsave()を使用する!

今回作成したアニメーションがコチラ。

正規分布から乱数を「100個」生成し、それらをプロットした画像を1枚1枚を1000ms(=1秒ごと)に画像を切り替えていくアニメーションです。

f:id:Medicmed:20180428123848g:plain

画像を切り替えていく速さを0.1秒に変更すると下のアニメーションになります。

だいぶ印象が変わると思います。

f:id:Medicmed:20180428124257g:plain

色々なグラフでアニメーションを試してみた!

f:id:Medicmed:20180428125413p:plain

今回はプロット画像を直線・ドット・赤ドットの3種類で表示したものをアニメーション化してみました。

スティーブ・ジョブズの言う「点と点が線になる」ってやつですね。

f:id:Medicmed:20180428125314g:plain

f:id:Medicmed:20180428130522p:plain

今回は棒グラフをアニメーション化してみました。何かに使う要素はゼロですね()

f:id:Medicmed:20180428130328g:plain

ヒストグラムのアニメーション化はできなかったので、できるようになったらブログにアップしたいと思います。

 

おまけ

subplotを用いて複数のグラフを表示してみよう!

f:id:Medicmed:20180428133047p:plain

hist関数を使用してグラフを作成してみました。

f:id:Medicmed:20180428133150p:plain

ぜひ参考にしてみてください。

終わり。

 

入門 Python 3

入門 Python 3