はじめに
matplotlib FuncAnimationによる、approximate_polygonのtoleranceを変化させるアニメーションの例を説明する。
コード
解説
モジュールのインポート
図形データの生成
閉じた台形状の図形データとなる。
図の作成
ax.set_aspect(‘equal’)ですべての図のアスペクト比を揃えて、
ax.plot(shape1[:, 0], shape1[:, 1])で元データの図形を表示する。
アニメーションの設定
空のリストの生成
アニメーション関数内で作成した図をいれるリスト。
ns1がapproximate_polygonを実行した図、
ns2がsubdivide_polygonを実行した図となる。
アニメーションの関数
古いプロットを消す
図形の細分化
new_shape1に所定の回数のsubdivide_polygonを適用し、細分化しておく。
subdivide_polygonについては、以下で解説した。
図形の近似
approximate_polygon()で図形の近似をする。ここでは、toleranceを順次変化させて、近似される形の変化をアニメーションで表示する。
approximate_polygonについても、以下で解説した。
図の表示
プロットして、リストに.append()で追加することで表示できる。
タイトルの表示
ax.set_title(“tolerance=”+str(0.01*num)+”,point=”+str(len(appr_shape1)-1))でタイトルにtoleranceの値と、approximate_polygonで近似した図形のデータポイント数を表示する。
アニメーションの表示
fargs=(new_shape,)とすることで、ローカルの変数(new_shape)をアニメーション関数内にもっていくことができる。
HTML(ani.to_html5_video())とすればjupyter notebook上にアニメーションを表示できる。
コメント