[matplotlib 3D] 28. voxel

matplotlib 3D
スポンサーリンク

3D voxelグラフの作成

コード

でできる図。

解説

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

コメント