はじめに
ボロノイ図とは、任意の位置に配置された複数個の点に対して、同一平面上の他の点がどの点に近いかによって分割した図のことです。この記事では、scipy.spatialのVoronoi関数とvoronoi_plot_2d関数を使用して、順次出現する点のボロノイ図を生成し、matplotlibのFuncAnimationを使ってアニメーション化する方法を解説します。
コード
解説
モジュールのインポート
バージョン
データの生成
形状が(100,2)のランダムなデータを作成します。
アニメーションの設定
最初に10個のデータ点によるボロノイ図を作成・表示し、その後ax.cla()でそれを消去してデータ点を1つずつ増やした新しいボロノイ図を順次表示することでアニメーションを実現する。また、ax.set(xlim=(-0.2,1.2), ylim=(-0.2,1.2))で表示範囲を固定しておく。
アニメーションの表示
FuncAnimationを使用してアニメーションを表示します。frame数を90、intervalを100msに設定して9秒のアニメーションを作成します。
HTML(ani.to_html5_video())
このコードにより、Jupyter NotebookやJupyter Lab上でアニメーションを直接表示できます。
また、ani.save(‘ファイル名’, writer=”ffmpeg”, dpi=250)を実行すると、アニメーションをMP4形式で保存できます。
円状に並んだデータの場合
データは下記サイトをもとにして作成しました。
Triplot Demo — Matplotlib 3.1.2 documentation
まとめ
本記事では、matplotlibとscipy.spatialを組み合わせてボロノイ図のアニメーションを作成する方法を紹介しました。この技術を応用することで、動的に変化する空間分割を視覚的に表現でき、様々なデータ分析や計算幾何学の理解に役立てることができます。
参考
voronoi_plot_2d — SciPy v1.16.1 Manual
コメント
[…] グラフの更新にはサボテンパイソンさんのソースを参考にしました […]