[matplotlib animation] 29. 飛び出す円グラフ

matplotlib Animation

はじめに

matplotlib FuncAnimationで円グラフの一部が飛び出すアニメーションを作成する。

コード

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

解説

モジュールのインポート

ラベルとデータと飛び出しの設定

labelで各データのラベルの設定をし、sizesで円グラフの大きさを設定している。explodeは円グラフを飛び出させるための設定で、初期設定として、すべて飛び出さないように(0,0,0,0)と設定した。

円グラフの表示

円グラフはax.pie()で表示できる。詳細は以下を参照。
ax.pie()からは、patches, texts,autotextsの3つが返ってくるので、これを受けるために、chocopie,a,b, = としている。

[matplotlib] 23. 円グラフ(Pie chart)
matplotlibで円グラフを表示する方法

アニメーションの設定

アニメーションでは古いグラフを消して新しいグラフを表示するという動作を繰り返すので、ax.cla()で現在表示されているグラフを消している。

update関数のなかで、 chocopie,a,b, = ax.pie(sizes, explode=explode,・・・)と、円グラフをプロットする。ここでは、explodeのmugichocoの部分を0から0.25, 0.25から0へと直線的に変化させているので、円グラフのmugichoco部分が飛び出して戻る円グラフのアニメーションが得られる。

そのときそのときの、explodeの値を、ax.set_title(“explode = “+str(0.01*num)[:4])とすることで、タイトルに表示している。

アニメーションの表示

FuncAnimationでanimationの表示する。updateを51step実行してアニメーションとする。intervalは100 ms なので5秒ちょっとのアニメーションとなる。fargsには、update関数に渡す変数を[chocopie, a,b]のように記述する。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。

アニメーションの保存

ani.save(‘explode_pie.mp4’, writer=”ffmpeg”,dpi=dpi)でアニメーションを保存することができる。dpiを設定することで指定の解像度での保存が可能となる。

参考

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.pie.html
https://matplotlib.org/api/_as_gen/matplotlib.animation.FuncAnimation.html

コメント