극좌표를 사용한 3D 표면 플로팅

Beginner

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

소개

이 랩은 Python Matplotlib 라이브러리를 사용하여 극좌표를 갖는 3D 표면을 생성하는 단계별 가이드입니다. 이 랩은 Python 프로그래밍 및 Matplotlib 라이브러리에 대한 기본적인 지식을 가지고 있다고 가정합니다.

VM 팁

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

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

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

필요한 라이브러리 가져오기

이 랩에 필요한 라이브러리, 즉 Matplotlib 과 NumPy 를 가져오는 것으로 시작합니다. Matplotlib 은 Python 용 플로팅 라이브러리이고, NumPy 는 Python 프로그래밍 언어용 라이브러리로, 대규모 다차원 배열과 행렬을 지원합니다.

import matplotlib.pyplot as plt
import numpy as np

메쉬 생성

다음으로, 극좌표에서 메쉬를 생성하고 해당 Z 값을 계산합니다. 반지름 값 r의 배열, 각도 값 p의 배열을 생성한 다음, NumPy 의 meshgrid() 함수를 사용하여 RP 값의 그리드를 생성합니다. 마지막으로, Z 방정식을 사용하여 표면의 각 점의 높이를 계산합니다.

r = np.linspace(0, 1.25, 50)
p = np.linspace(0, 2*np.pi, 50)
R, P = np.meshgrid(r, p)
Z = ((R**2 - 1)**2)

메쉬를 직교 좌표계로 표현

이제 NumPy 의 cos()sin() 함수를 사용하여 메쉬를 직교 좌표계 (cartesian system) 로 표현합니다.

X, Y = R*np.cos(P), R*np.sin(P)

표면 플롯

이 단계에서는 Matplotlib 의 plot_surface() 함수를 사용하여 표면을 플롯합니다. 표면의 색상을 설정하기 위해 YlGnBu_r 컬러맵 (colormap) 을 사용합니다.

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)

제한 조정 및 레이블 추가

마지막으로, Matplotlib 의 set_zlim()set_xlabel(), set_ylabel(), set_zlabel() 함수를 사용하여 플롯의 제한을 조정하고 축 레이블을 추가합니다. 또한 LaTeX 수학 모드 (math mode) 를 사용하여 축 레이블을 작성합니다.

ax.set_zlim(0, 1)
ax.set_xlabel(r'$\phi_\mathrm{real}$')
ax.set_ylabel(r'$\phi_\mathrm{im}$')
ax.set_zlabel(r'$V(\phi)$')

요약

이 랩에서는 Python Matplotlib 라이브러리를 사용하여 극좌표 (polar coordinates) 로 3D 표면을 생성하는 방법을 배웠습니다. 필요한 라이브러리를 가져오는 것으로 시작하여, 극좌표에서 메쉬 (mesh) 를 생성하고, 메쉬를 데카르트 좌표계 (cartesian system) 로 표현하고, 표면을 플롯하고, 마지막으로 제한을 조정하고 축 레이블을 추가했습니다.