[matplotlib animation] 30. 穴が塞がる円グラフ

matplotlib Animation

はじめに

matplotlib FuncAnimationにより、中心の穴が塞がっていく円グラフのアニメーションを作成する。

コード

解説

モジュールのインポート

データと色の設定

dataは、(4, 2)の形状のてきとうなデータを生成。

tab20bは、

https://matplotlib.org/examples/color/colormaps_reference.html

のQualitative colormapsにあり、同系色の色が4個ずつ連なったカラーマップとなっている。そのうち、外側のドーナツの色を0から4こ飛ばしで選択した。

円グラフの表示

円グラフはax.pie()で表示できる。ドーナツ状にするには、widthを設定すれば良い。
ax.pie()からは、patches, textsの2つが返ってくるので、これを受けるために、donuts,a, = としている。autotextsはautopctを設定していないので返ってこない。

アニメーションの設定

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

update関数のなかで、 donuts,a, = ax.pie(vals.sum(axis=1), radius=1,colors=outer_colors, wedgeprops=dict(width=num/100, edgecolor=’w’))で、ドーナツグラフから円グラフへと変化するアニメーションをプロットする。ここでは、widthを0から1にかけて変化させているので、円の中心の空洞が次第に消滅する円グラフのアニメーションが得られる。

そのときそのときの、widthの値をタイトルに表示している。

アニメーションの表示

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

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

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

参考

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

コメント