[matplotlib animation] 71. 3D heartbeatアニメーション

matplotlib 3D

はじめに

matplotlibのFuncAnimationとmplot3dを使って3Dハートの鼓動アニメーションを作成する方法を解説します。

コード

解説

モジュールのインポート

バージョン

ボクセルによるハートの表示

ボクセルによるハートの作成は下記記事と同様に行いました。

[matplotlib 3D] 32. voxelグラフでハートを表示して回転する
matplotlib mplot3d voxelグラフでハート♡を表示する。回転アニメーションも表示する。

各軸の表示範囲の取得

アニメーションでは表示範囲を変化させることでハートの大きさを変えています。この表示範囲はax.get_xlim()などのメソッドで取得できます。

軸の表示範囲を変化させるための変数

表示範囲の変化について、各軸の下側をbeat_l、上側をbeat_hとして設定しました。このデータは前述の2Dアニメーションと同じ値を使用しています。

[matplotlib animation] 70. ハートの鼓動アニメーション
matplotlibのFuncAnimationでハートが鼓動するアニメーションを表示する。

図示すると下記のようになります。

3Dハートの表示

fig.add_subplot(projection=’3d’)を使用して3Dグラフを作成します。ハートの表示にはax.voxels()メソッドを使い、ax.axis(‘off’)で座標軸を非表示にできます。

アニメーションの設定

update関数内で ax.set_xlim などを使用して軸の表示範囲を調整できます。

BPMの計算と表示

アニメーションの表示

HTML(ani.to_html5_video())を使用すると、Jupyter NotebookやJupyter Lab上にアニメーションを直接表示できます。

また、ani.save('ファイル名', writer="ffmpeg", dpi=100)でアニメーションをMP4形式で保存することが可能です。

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

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

参考

[matplotlib 3D] 32. voxelグラフでハートを表示して回転する
matplotlib mplot3d voxelグラフでハート♡を表示する。回転アニメーションも表示する。
numpy.tile — NumPy v2.3 Manual

コメント