[matplotlib animation] 56. 順次出現するデータにドロネー三角形分割を適用するアニメーション

matplotlib Animation

はじめに

この記事では、matplotlibのtriplotを使用して、順次出現するデータポイントにドロネー三角形分割を適用したアニメーション作成方法を解説します。点が徐々に増えていく様子と、それに合わせて変化する三角形分割の動的な可視化を実現する手法を紹介します。

コード

解説

モジュールのインポート

データの生成

np.random.randint(27)は0から26までの整数をランダムに生成するもので、0から1の範囲の要素を持つサイズ27の配列(np.array)を生成するには代わりにnp.random.rand(27)を使用します。

アニメーションの設定

最初に ax.cla() で、すでに表示されているグラフを消去します。

次に ax.set_aspect などで、グラフの見た目を調整します。

tri.Triangulation(x[:3+num], y[:3+num]) でドロネー三角形分割を実行します。この関数は、点の座標情報と三角形の辺の情報を含むデータを返します。

このデータを triplot でプロットすることで、ドロネー三角形分割が視覚化されます。

分割に使用するデータ点を x[:3+num], y[:3+num] のように徐々に増やしていくことで、アニメーション効果を生み出しています。

アニメーションの表示

FuncAnimationを使用してアニメーションを表示します。引数の「frames=n_points – n_initial + 10」でフレーム数を指定し、「interval=200」で画面切り替えの時間を200ミリ秒に設定しています。また、Jupyter Notebook上でアニメーションを表示したい場合は、HTML(ani.to_html5_video())を実行すると効果的に表示できます。

frame数=50

frame数=100

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

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

まとめ

matplotlibのtriplot機能を活用することで、ドロネー三角形分割の動的な可視化が比較的簡単に実現できます。このような視覚化は、計算幾何学の理解だけでなく、空間データ分析、メッシュ生成、パターン認識など様々な分野での直感的な理解に役立ちます。本記事で紹介したコードをカスタマイズして、ぜひ独自のデータ可視化に挑戦してみてください。

参考

Triplot Demo — Matplotlib 3.1.0 documentation
ドロネー図 - Wikipedia

コメント