[matplotlib animation] 24. Voxel アニメーション

matplotlib 3D
スポンサーリンク

matplotlib FuncAnimationによるVoxelグラフのアニメーション

移動アニメーション

コード

解説

モジュールのインポート
3Dグラフの設定
座標データの生成

np.indices()で形状が(10,10,10)の配列で要素としてインデックスをもつ配列を作成。

アニメーションの設定

ax.cla()で古いボクセルグラフを消去する。
その際、ラベルも消えてしまうので、毎回ax.set_xlabel()などでラベル名を設定。

ボクセルは配列中のTrueの位置にだけ表示される。
voxels = (x < num+1) & (y < num+1) & (z < num+1) & (x > num-1) & (y > num-1) & (z > num-1)
とすることでTrueの位置が(0,0,0),(1,1,1),(2,2,2)と変化していくので、3Dグラフ上でボクセルが移動するアニメーションが得られる。

アニメーションの表示

FuncAnimationでanimationを表示する。updateを10step実行してアニメーションとする。intervalは100 ms なので1秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。

膨張アニメーション

コード

解説

アニメーションの設定

voxels = (x < 11+num) & (y < num+11) & (z < num+11) & (x > 9-num) & (y > 9-num) & (z > 9-num)
のようにすることで、Trueの位置が(10,10,10)から周りに1個ずつボクセルが増えていくアニメーションができる。

積み上げアニメーション

コード

解説

アニメーションの設定
[matplotlib 3D] 28. voxel
3D voxelグラフの作成

↑を参考にして、各ボクセルの色が異なるアニメーションを作成することもできる。

参考

3D voxel / volumetric plot — Matplotlib 3.0.3 documentation
numpy - インデックスを作成する関数 - Pynote
概要 numpy のインデックスを作成する関数を整理する。 概要 numpy.s_ numpy.indices numpy.ravel_multi_index numpy.unravel_index numpy.tril_indices numpy.tril_indices_from numpy.triu_indice...

コメント