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

matplotlib Animation

はじめに

この記事では、matplotlib の FuncAnimation を使用して、中心の穴が徐々に塞がっていく円グラフのアニメーションを作成する方法について解説しています。matplotlib のアニメーション機能を活用して、動的な視覚効果を実現する手法が紹介されています。

コード

解説

モジュールのインポート

データと色の設定

dataは、(4, 2)の形状のランダムなデータを生成します。

tab20bは、

color example code: colormaps_reference.py — Matplotlib 2.0.2 documentation

Qualitative colormapsに属し、同系色が4色ずつ連なったカラーマップです。この中から、外側のドーナツ部分の色を0番から4つおきに選択しました。

円グラフの表示

円グラフは ax.pie() で表示できます。ドーナツ状にするには、width パラメータを設定するだけです。ax.pie() からは patches と texts の2つの値が返されるため、これらを受け取るために donuts, a, = としています。autopct を設定していないため、autotexts は返されません。

アニメーションの設定

アニメーションは古いグラフを消して新しいグラフを表示する動作を繰り返すため、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を使用してアニメーションを表示します。update関数を101ステップ実行してアニメーションを生成します。intervalは100msに設定されているため、アニメーションの総再生時間は約10秒になります。fargsパラメータには、update関数に渡す変数[donuts, a]を指定します。

jupyter notebook上では、HTML(ani.to_html5_video())を実行することでアニメーションを表示できます。

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

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

まとめ

matplotlib の FuncAnimation を使用することで、穴が塞がっていく円グラフなどの動的なデータ視覚化が可能になります。このようなアニメーションは、時間経過によるデータの変化を効果的に表現するのに役立ちます。

参考

matplotlib.axes.Axes.pie — Matplotlib 3.10.6 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.10.6 documentation

コメント