이 글에서는 예제를 통해 Matplotlib에서 MATLAB의 surf(x,y,z,c) 함수와 동일한 효과를 구현하는 방법을 알아보겠습니다.
MATLAB의 surf 함수는 3차원 표면 그래프를 그리는 대표적인 도구입니다. Matplotlib에서는 plot_surface() 메서드가 이에 해당하는 기능을 제공하며, cmap 매개변수를 활용하면 MATLAB의 네 번째 인자인 c(색상 데이터)와 같은 시각적 효과를 낼 수 있습니다.
구현 단계
그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
새 그림을 생성하거나 기존 그림을 활성화합니다.
서브플롯 배치의 일부로 그림에 'ax'(3D 축)를 추가합니다.
Numpy를 사용하여 u, v, x, y, z 데이터 포인트를 생성합니다.
plot_surface()메서드로 표면 플롯(surface plot)을 생성하고,cmap으로 색상을 지정합니다.show()메서드를 사용하여 그림을 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 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]: 구면 좌표 계산을 위한 격자 그리드를 생성합니다. 복소수 형태인 30j와 20j는 각 구간을 나눌 점의 개수를 의미합니다.- x, y, z 좌표는 구(sphere)의 파라메트릭 방정식을 따라 삼각함수로 계산됩니다.
cmap=plt.cm.YlGnBu_r: 노란색-녹색-파란색 역순 컬러맵을 적용하여, MATLAB의surf(x,y,z,c)에서 색상 데이터(c)로 표현하던 효과를 동일하게 재현합니다.
출력 결과
