[matplotlib animation] 40. subdivide_polygonの各degreeにおける実行回数変化アニメーション

matplotlib Animation

はじめに

この記事では、matplotlibのFuncAnimationを使用して、subdivide_polygon関数のdegree=1, 2, 3における実行回数の変化をアニメーション化する方法について説明します。subdivide_polygon関数は多角形を細分化するもので、degreeパラメータによって細分化の度合いが変わります。このアニメーションを通じて、各degreeの値における計算量の違いを視覚的に理解することができます。

コード

解説

モジュールのインポート

図形データの生成

閉じた台形状の図形データとなります。

図の作成

plt.subplots(1,3)を使用して1行3列の図を作成します。各図に対してa.set_aspect(‘equal’)を適用してアスペクト比を揃え、a.plot(shape1[:, 0], shape1[:, 1])で元データの図形を表示します。

アニメーションの設定

空のリストの生成

アニメーション関数内で作成した図をいれるリストです。

アニメーションの関数

古いプロットを消す
図形の細分化と表示

new_shape1~3に所定の回数のsubdivide_polygonを適用し、その結果をplotした後、.append()メソッドでリストに格納します。subdivide_polygonの詳細については、以下で解説しています。

[scikit-image] 20. 図形の近似と細分化(measure.approximate_polygon)
scikit-imageのmeasure.approximate_polygonを使った図形の輪郭近似と細分化について解説します。許容誤差パラメータの調整方法や実際の使用例を通して、画像処理における形状の単純化と詳細化の手法を学べます。
タイトルの表示

ax[0].set_title(“degree=1,point=”+str(len(new_shape1)-1))を使用して、タイトルにdegreeの値と細分化したデータのポイント数を表示します。

アニメーションの表示

HTML(ani.to_html5_video())とすればjupyter notebook上にアニメーションを表示できます。

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

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

まとめ

matplotlibのFuncAnimationを使用することで、subdivide_polygon関数の各degreeにおける実行回数の変化を動的に可視化できることがわかりました。特にdegreeの値が大きくなるにつれて、実行回数が指数関数的に増加する様子が明確に示されており、アルゴリズムの計算量を直感的に理解するのに役立ちます。

参考

[scikit-image] 20. 図形の近似と細分化(measure.approximate_polygon)
scikit-imageのmeasure.approximate_polygonを使った図形の輪郭近似と細分化について解説します。許容誤差パラメータの調整方法や実際の使用例を通して、画像処理における形状の単純化と詳細化の手法を学べます。

コメント