Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 MATLAB의 surf(x,y,z,c)와 동일한 효과 구현하기

이 글에서는 예제를 통해 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)로 표현하던 효과를 동일하게 재현합니다.

출력 결과

Matplotlib에서 MATLAB의 surf(x,y,z,c)와 동일한 효과 구현하기