はじめに
この実験では、Matplotlib を使って円柱座標を使って 3D ボクセルプロットを作成する方法を学びます。このプロットは、.Axes3D.voxels の _x_、_y_、および z パラメータを使って 3D ボクセルプロットを作成する方法を示します。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使って練習します。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に直面した場合は、Labby にお尋ねください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポート
この実験に必要なライブラリをインポートするのが最初のステップです。matplotlib.pyplot、numpy、および matplotlib.colors を使用します。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors
中点関数の定義
次に、座標の配列の中点を計算するための midpoints 関数を定義します。この関数は後で r、theta、および z の中点を計算するために使用されます。
def midpoints(x):
sl = ()
for i in range(x.ndim):
x = (x[sl + np.index_exp[:-1]] + x[sl + np.index_exp[1:]]) / 2.0
sl += np.index_exp[:]
return x
座標と RGB 値の定義
このステップでは、座標 r、theta、および z を定義し、それぞれに RGB 値を付けます。
r, theta, z = np.mgrid[0:1:11j, 0:np.pi*2:25j, -0.5:0.5:11j]
x = r*np.cos(theta)
y = r*np.sin(theta)
rc, thetac, zc = midpoints(r), midpoints(theta), midpoints(z)
## define a wobbly torus about [0.7, *, 0]
sphere = (rc - 0.7)**2 + (zc + 0.2*np.cos(thetac*2))**2 < 0.2**2
## combine the color components
hsv = np.zeros(sphere.shape + (3,))
hsv[..., 0] = thetac / (np.pi*2)
hsv[..., 1] = rc
hsv[..., 2] = zc + 0.5
colors = matplotlib.colors.hsv_to_rgb(hsv)
3D ボクセルプロットの作成
ここでは、ax.voxels 関数を使って 3D ボクセルプロットを作成します。パラメータとして x、y、z、および sphere を渡します。また、先ほど定義した colors 配列を使って facecolors と edgecolors を追加します。
ax = plt.figure().add_subplot(projection='3d')
ax.voxels(x, y, z, sphere,
facecolors=colors,
edgecolors=np.clip(2*colors - 0.5, 0, 1), ## brighter
linewidth=0.5)
プロットの表示
最後に、plt.show() 関数を使ってプロットを表示します。
plt.show()
まとめ
この実験では、Matplotlib を使って円柱座標を用いて 3D ボクセルプロットを作成する方法を学びました。また、座標と RGB 値を定義する方法と、ax.voxels 関数を使って 3D ボクセルプロットを作成する方法も学びました。