[matplotlib 3D] 28. Pythonで3D voxelグラフ

matplotlib 3D

コード

解説

3Dボクセルグラフは、データを立方体で表示するグラフ。2次元のピクセルに対して、3次元のボクセルとのこと。[1]

x, y, z = np.indices((8, 8, 8))

np.indicesで各要素のindexの値をもつ配列ができる。例えば、np.indices((2, 2, 2))とすれば、

x= [[[0 0]  [0 0]] [[1 1]  [1 1]]]
y= [[[0 0] [1 1]] [[0 0] [1 1]]]
z= [[[0 1] [0 1]] [[0 1] [0 1]]]

となる。[2]

cube1 = (x < 3) & (y < 3) & (z < 3)

8×8×8の配列でcube1の条件に当てはまるとこだけ、Trueとなる。cube2, linkも同様。

voxels = cube1 | cube2 | link

で各配列を比較して、Trueの場合はTrueになる。[3]

colors = np.empty(voxels.shape, dtype=object)
colors[link] = 'red'

np.emptyで適当な同じ形の配列をつくって、linkがTrueの部分を’red’とする。他も同様。

ax.voxels(voxels, facecolors=colors, edgecolor='k')

facecolorを設定して色で、edgecolorを黒でプロット。

参考

  1. ボクセル – Wikipedia
  2. numpy.indices — NumPy v1.15 Manual
  3. ビット演算子 – 数値 – Python入門 – Java Drive

関連記事

[matplotlib 3D] 46.ボクセルピラミッド(Voxel Pyramid)
matplotlib mplot3dでvoxelによるピラミッド
[matplotlib 3D] 32. voxelグラフでheart
matplotlib mplot3d voxelグラフでheartを表示+回転アニメーション
[matplotlib 3D] 31. voxels_torus
matplotlib mplot3dのvoxelでトーラスを表示。
[matplotlib 3D] 29. NumPyのlogoをvoxelで表示
3Dvoxels graph (numpy logo) numpyのロゴマークをボクセルグラフで表示
matplotlib 3Dpython
この記事をシェアする
sabopy.comをフォローする
サボテンパイソン

コメント