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

matplotlib 3D

はじめに

voxel(ボクセル)は「volumetric pixel」の略で、3次元空間における最小単位の立方体です。2次元の「ピクセル」が3次元に拡張されたものと考えることができます。ここでは、Pythonのmatplotlibを使用した3D voxelグラフの作成方法について解説します。

コード

解説

モジュールのインポート

データの生成

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

np.indicesは各要素のインデックス値を持つ配列を生成します。例えば、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がTrueの部分には’red’という色を割り当てます。同様の方法で他の要素にも適切な色を設定できます。

ボクセルグラフの表示

ax.voxels(voxels)関数を使用してボクセルグラフを表示できます。この例では、facecolorパラメータで色を設定し、edgecolorを黒に指定してプロットしています。

影なしボクセルグラフ

デフォルトでは shade=True が設定されているため、影を表示したくない場合は shade=False を指定する必要があります。

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

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

参考

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

関連記事

[matplotlib 3D] 46.ボクセルピラミッド(Voxel Pyramid)
Matplotlibの3Dグラフ機能を使用して、voxel(ボクセル)でピラミッド形状を描画する方法を解説します。3次元空間内に立体的なピラミッドを表現し、視覚的に理解しやすいデータ可視化手法を紹介します。
[matplotlib 3D] 32. voxelグラフでハートを表示して回転する
Matplotlibの3Dグラフ機能を使ってボクセルでハート形状を作成し、回転アニメーションを表示する方法を解説。数式を使ったハート形状の表現方法からアニメーション作成まで、具体的なPythonコードとカスタマイズのポイントを紹介しています。
[matplotlib 3D] 31. トーラス(ドーナツ形状)を3Dボクセル表現する方法
matplotlib mplot3dモジュールのvoxel関数を使用してトーラス(ドーナツ形状)を3Dボクセルで表現する方法を解説します。3次元空間での数学的形状の視覚化とボクセルベースのレンダリング技術について学べるコンテンツです。
[matplotlib 3D] 29. NumPyの以前のlogoをvoxelで表示
NumPyの過去のロゴをMatplotlibのvoxelプロットで3D表示する方法を解説します。NumPyのシンボルマークを3次元的に可視化し、回転させながら空間的な構造を確認できます。Python数値計算ライブラリの視覚的表現を学べる実践的なチュートリアルです。

コメント

  1. […] [matplotlib 3D] 28. Pythonで3D voxelグラフ3D voxelグラフの作成について解説する。s… […]