[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. Pythonで3D voxelグラフ
3D voxelグラフの作成について解説する。

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

参考

https://matplotlib.org/gallery/mplot3d/voxels.html
301 Moved Permanently

コメント