はじめに
配列の中の要素を取り出す場合は、スライスを使う。構文はx[start:stop:step] のようになり、デフォルトではstart=0, stop=配列のサイズ,step=1となっている。ここでは、いろいろなスライス方法をmatplotlib mplot3dのvoxelグラフで可視化した例について説明する。
コード
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
解説
モジュールのインポート
データの生成
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)のようにすることで表示する。
コメント