[NumPy] 20.配列のスライスをボクセルグラフで可視化

matplotlib 3D

はじめに

配列の中の要素を取り出す場合は、スライスを使う。構文はx[start:stop:step] のようになり、デフォルトではstart=0, stop=配列のサイズ,step=1となっている。ここでは、いろいろなスライス方法をmatplotlib mplot3dのvoxelグラフで可視化した例について説明する。

コード

解説

モジュールのインポート

データの生成

0から24の要素をもつ5×5の配列を作成します。

figの作成

2×3で6個の3Dグラフを作成します。projection=’3d’とすることで、3Dグラフにしています。

ボクセルデータの設定

ボクセルの表示設定を行います。v1は全グラフに表示される基本ボクセルとして機能し、v2からv7までは各種スライス操作の結果に対応するボクセルを生成します。

ボクセルグラフの設定

for文を使用してax1からax6まで共通する設定をまとめて行います。

aa.voxels(v1, facecolors=’pink’, edgecolor=’grey’)で5×5のベースとなるボクセルを表示します。

aa.set_axis_off()で軸と軸ラベルを非表示にします。

aa.view_init(90, 270)で視点を設定し、90度で真上からの視点、270度で原点(0,0)が左下に位置するようにします。この設定を行わない場合、見た目は下図のようになります。

軸ラベルなどを非表示としたので、aa.text2D(0.4, 0.15, “axis 0”, transform=aa.transAxes)などで軸ラベルを表示します。

ボクセルグラフの表示

ax1.voxels(v2, facecolors=’lime’, edgecolor=’green’)などで、スライスの適合する位置を緑としています。

ax1は下記のようになります。

ax2は第0軸が一個飛ばしとなり、第1軸の要素はすべてスライスされます。

ax3では、第0軸はすべてスライスされ、第1軸は1番目から一個飛ばしでスライスされます。

ax4は、-1とすることで各軸の最後の要素をスライスできます。

ax5の[-2:]は後ろから2番目以降から最後までという意味になります。

ax6はax1と見た目は同じですが、配列の順番が逆順になります。

図全体のタイトル名は、fig.suptitle(‘Visualization of slice’, fontsize=24)のようにすることで表示できます。

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

参考

mpl_toolkits.mplot3d.axes3d.Axes3D — Matplotlib 3.5.0 documentation
https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

コメント