[matplotlib animation] 87. 円の多角形近似のresolution変化アニメーション

matplotlib

はじめに

この記事では、matplotlibのFuncAnimationを使用して、patches.CirclePolygonのresolutionパラメータを変化させることで、円の多角形近似がどのように変化するかをアニメーションで表示する方法について解説します。resolution値が増加するにつれて、多角形が徐々に円に近づいていく様子を視覚的に確認できます。

コード

解説

モジュールのインポート

バージョン

図の作成

subplot_kw={‘aspect’: ‘equal’}を使用することで、縦横比が等しい図を作成できます。

アニメーション関数

まず空のリストartistsを作成し、このリストにCirclePolygonをax.add_artist(cp)で追加します。

artistsの長さが1以上になると、リスト内の要素を消去し、常に最新のCirclePolygonのみが表示されるようにします。

CirclePolygonは座標(0,0)に配置し、半径5の円サイズで、resolutionをnum+3と変化させながら表示します。

ax.set_title(“resolution=”+str(num+3))を使って、タイトルに現在のresolution値を表示します。

アニメーションの表示

FuncAnimationを使用してアニメーションを表示します。frame数は28、intervalは200msに設定し、約6秒のアニメーションを作成します。

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

また、ani.save(‘ファイル名’, writer=”ffmpeg”, dpi=120)を使用すると、アニメーションをMP4形式で保存できます。

古いCirclePolygonを消さないで全て表示するアニメーション

ax.set_axisbelow(True)を使用することで、グリッド線を図の最下層に表示させることができます。

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

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

まとめ

本記事では、matplotlibを使って円の多角形近似のresolution変化をアニメーション化する方法を紹介しました。FuncAnimationを活用することで、多角形の頂点数が増えていくにつれて円に近づいていく過程を動的に表現できることがわかりました。このテクニックは、数学的概念の視覚化や教育目的、さらにはデータ可視化プロジェクトにも応用可能です。

参考

matplotlib.patches.CirclePolygon — Matplotlib 3.10.6 documentation

コメント