소개
이 랩에서는 Matplotlib 을 사용하여 원통 좌표계에서 3D 복셀 플롯을 만드는 방법을 배우게 됩니다. 이 플롯은 .Axes3D.voxels의 x, y, z 매개변수를 사용하여 3D 복셀 플롯을 생성하는 방법을 보여줍니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 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 복셀 플롯을 생성하는 방법을 배웠습니다.