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グラフの作成について解説する。
↑を参考にして、各ボクセルの色が異なるアニメーションを作成することもできる。
参考
3D voxel / volumetric plot — Matplotlib 3.9.2 documentation
301 Moved Permanently
コメント