Python에서 구(sphere) 표면 위의 점을 3차원으로 시각화하려면 Matplotlib의 plot_surface() 메서드를 활용하면 됩니다. 이 글에서는 NumPy와 함께 사용하여 간단하게 구 표면을 그리는 방법을 단계별로 살펴보겠습니다.
구현 단계
figure() 메서드를 사용해 새로운 Figure를 생성하거나 기존 Figure를 활성화합니다.
add_subplot() 메서드에
projection='3d'옵션을 지정하여 3D 서브플롯을 추가합니다.반지름을 나타내는 변수 r을 초기화합니다.
NumPy의
mgrid등을 활용해 구면 좌표의 theta 값과 x, y, z 데이터 포인트를 생성합니다.plot_surface() 메서드로 구 표면을 플롯합니다.
show() 메서드를 호출해 최종 결과를 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax = fig.add_subplot(projection='3d') r = 0.05 u, v = np.mgrid[0:2 * np.pi:30j, 0:np.pi:20j] x = np.cos(u) * np.sin(v) y = np.sin(u) * np.sin(v) z = np.cos(v) ax.plot_surface(x, y, z, cmap=plt.cm.YlGnBu_r) plt.show()
코드 설명
np.mgrid[0:2*np.pi:30j, 0:np.pi:20j]: 가로 방향으로 30개, 세로 방향으로 20개의 격자점을 생성합니다. 여기서j는 복소수가 아니라 격자점 개수를 의미하는 NumPy 특수 표기법입니다.x, y, z: 구면좌표계를 데카르트 좌표계(x, y, z)로 변환한 결과로, 반지름 1인 단위 구를 형성합니다.cmap=plt.cm.YlGnBu_r: 노란색-녹색-파란색 계열의 색상 맵을 역순으로 적용해 표면에 입체감을 더합니다.
실행 결과
위 코드를 실행하면 아래 이미지처럼 색상이 적용된 3D 구 표면이 출력됩니다.
