はじめに
matplotlib FuncAnimationにより回転する円グラフのアニメーションを表示する。
コード
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
解説
モジュールのインポート
ラベルとデータと飛び出しの設定
labelで各データのラベルの設定をし、sizesで円グラフの大きさを設定している。explodeは円グラフを飛び出させるための設定で、ここでは、2番目の要素であるMugichocoを0.1だけ飛び出させるように設定した。
円グラフの表示
円グラフはax.pie()で表示できる。詳細は以下を参照。
ax.pie()からは、patches, texts,autotextsの3つが返ってくるので、これを受けるために、chocopie,a,b, = としている。
アニメーションの設定
アニメーションでは古いグラフを消して新しいグラフを表示するという動作を繰り返すので、ax.cla()で現在表示されているグラフを消している。
update関数のなかで、 chocopie,a,b, = ax.pie(sizes, explode=explode, labels=labels, autopct=’%1.1f%%’, shadow=True, startangle=4*num)と、円グラフをプロットする。ここで、startangleが4*numとなっているので、startangleが順次変化する円グラフのアニメーションが得られる。
そのときそのときの、startangleの値を、 ax.set_title(“startangle = “+str(4 * num)[:4])とすることで、タイトルに表示している。
アニメーションの表示
FuncAnimationでanimationの表示する。updateを91step実行してアニメーションとする。intervalは100 ms なので9秒ちょっとのアニメーションとなる。fargsには、update関数に渡す変数を[chocopie, a,b]のように記述する。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。
アニメーションの保存
ani.save(‘rotate_pie.mp4’, writer=”ffmpeg”,dpi=dpi)でアニメーションを保存することができる。dpiを設定することで指定の解像度での保存が可能となる。
コメント