[matplotlib animation] 78. add_subplotで作成した複数グラフの回転アニメーション

matplotlib

はじめに

scikit-imageのoctahedronを使い、異なるサイズの八面体の構造化要素をmatplotlibのadd_subplotで複数グラフ作成し、それぞれを回転させるアニメーション実装方法を解説します。

コード

解説

モジュールのインポートなど

バージョン

構造化要素の生成

辞書形式で大きさの異なる八面体を作成します。octahedron(5)を使用すると、半径5の八面体を生成できます。

構造化要素の表示

まず空のリスト(axes)を作成します。plt.figure(figsize=(12,8))でfigを作成し、fig.add_subplot(2, 3, idx)で図を順に生成していきます。projection=Axes3D.nameを指定することで3Dグラフを表示できます。

ボクセルグラフで立方体を表示するには、ax.voxels(struc,ec=’w’)を使用します。ecパラメータで各セルのエッジカラーを設定でき、この例ではwで白に設定しています。fcパラメータでは各セルの面の色を設定できます。

なお、ボクセルグラフの詳細については下記で解説しています。

[matplotlib 3D] 28. Pythonで3D voxelグラフ
Pythonのmatplotlibを使用した3D voxelグラフの作成方法について解説します。voxelは3次元空間内のピクセルで、データの可視化や3D構造の表現に役立ちます。このチュートリアルでは基本的な使い方から応用例まで紹介します。

ax.set(xlim=(-1,struc.shape[0]+1))などで各構造化要素のサイズに合わせて軸の範囲を設定します。

作成した図はaxes.append(ax)でリストに追加します。次の図を作成するためにidx += 1でインデックスを増やします。

アニメーションの関数

view_init関数をリスト内の各要素に適用し、図の表示角度を変化させることで回転アニメーションを作成します。

アニメーションの表示

FuncAnimationを使用してアニメーションを表示します。デフォルトのフレーム数は100であり、intervalを100msに設定した場合、全体で10秒のアニメーションになります。

HTML(ani.to_html5_video())

このコードを使用すると、Jupyter NotebookやJupyter Lab上でアニメーションを直接表示できます。

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

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

まとめ

matplotlib animationを使って複数の3Dグラフを同時に回転させるアニメーションを作成する方法を解説しました。add_subplotで複数グラフを配置し、FuncAnimationで各グラフの視点を同時に変更することで、効果的な可視化が実現できます。

参考

Generate footprints (structuring elements) — skimage 0.26.0rc0.dev0 documentation
skimage.morphology — skimage 0.26.0rc0.dev0 documentation
[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlibのmplot3dを使用して3Dグラフの回転アニメーションを作成する方法を解説します。動画として保存する手順や回転角度の制御など、3Dビジュアライゼーションを動的に表現するための基本テクニックを紹介します。

コメント