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

matplotlib 3D

はじめに

matplotlibのmplot3dでボクセルグラフを表示する方法について解説する。

コード

コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

解説

モジュールのインポート

データの生成

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

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]

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

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

色の設定

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

ボクセルグラフの表示

ax.voxels(voxels)でボクセルグラフを表示できる。
facecolorで色を設定して、edgecolorを黒としてプロットした。

影なしボクセルグラフ

defaultでshade=Trueなので、影無しにしたい場合、shade=Falseとする必要がある。

参考

  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で表示
NumPyのロゴをmatplotlib mplot3dのvoxelグラフで表示する方法について説明する。
matplotlib 3Dpython
この記事をシェアする
sabopy.comをフォローする
サボテンパイソン

コメント