RGB 색상으로 3D 복셀 플롯 만들기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 Matplotlib 을 사용하여 RGB 색상을 가진 3D 복셀 플롯을 만드는 방법을 배웁니다. 복셀 플롯은 데이터를 나타내는 큐브를 사용하여 2D 플롯에 3D 데이터를 표현하는 방법입니다. RGB 색상은 데이터의 서로 다른 값을 나타내는 데 사용됩니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 임포트

플롯을 생성하기 전에 필요한 라이브러리를 임포트해야 합니다. 이 경우 Matplotlib 과 NumPy 를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

좌표 및 색상 정의

다음으로, 플롯에 대한 좌표와 색상을 정의해야 합니다. 이 예제에서는 np.indices 함수를 사용하여 RGB 색상에 대한 17x17x17 값 그리드를 생성합니다.

r, g, b = np.indices((17, 17, 17)) / 16.0

또한 그리드의 값 사이의 중간점을 찾기 위해 midpoints 함수를 정의합니다. 이 함수는 나중에 구를 생성하는 데 사용됩니다.

def midpoints(x):
    sl = ()
    for _ 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 값에 대한 조건을 정의하여 플롯에 구를 생성합니다.

rc = midpoints(r)
gc = midpoints(g)
bc = midpoints(b)

sphere = (rc - 0.5)**2 + (gc - 0.5)**2 + (bc - 0.5)**2 < 0.5**2

색상 결합

이제 RGB 색상 구성 요소를 (17, 17, 17, 3) 형태의 단일 배열로 결합합니다.

colors = np.zeros(sphere.shape + (3,))
colors[..., 0] = rc
colors[..., 1] = gc
colors[..., 2] = bc

복셀 플롯 (Voxel Plot) 그리기

마지막으로, ax.voxels 함수를 사용하여 복셀 플롯을 그릴 수 있습니다. RGB 값, 구에 대한 조건, 면 색상, 가장자리 색상 및 선 너비를 전달합니다.

ax = plt.figure().add_subplot(projection='3d')
ax.voxels(r, g, b, sphere,
          facecolors=colors,
          edgecolors=np.clip(2*colors - 0.5, 0, 1),  ## brighter
          linewidth=0.5)
ax.set(xlabel='r', ylabel='g', zlabel='b')
ax.set_aspect('equal')
plt.show()

요약

이 Lab 에서는 Matplotlib 을 사용하여 RGB 색상을 가진 3D 복셀 플롯을 만드는 방법을 배웠습니다. 필요한 라이브러리를 가져오고, 좌표와 색상을 정의하고, 구를 생성하고, 색상을 결합하고, 복셀 플롯을 그렸습니다. 복셀 플롯은 2D 플롯에서 3D 데이터를 표현하는 유용한 방법이며, 다양한 유형의 데이터를 나타내기 위해 다른 색상과 모양으로 사용자 정의할 수 있습니다.