Matplotlib 2D 및 3D 플로팅

Beginner

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

소개

이 랩에서는 Matplotlib 을 사용하여 2D 및 3D 플롯을 모두 포함하는 그림을 만드는 과정을 안내합니다. 2D 플롯은 감쇠 진동을 표시하고, 3D 플롯은 사인파를 표시합니다.

VM 팁

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

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

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

라이브러리 임포트

이 단계에서는 이 랩에 필요한 라이브러리를 임포트합니다. 플로팅을 위해 Matplotlib 을 사용하고, 배열 생성을 위해 NumPy 를 사용하며, 3D 플로팅을 위해 mpl_toolkits 을 사용합니다.

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

함수 정의

이 단계에서는 감쇠 진동을 생성하는 함수를 정의합니다.

def f(t):
    return np.cos(2*np.pi*t) * np.exp(-t)

Figure 생성

이 단계에서는 두 개의 서브플롯 (subplot) 을 가진 figure 를 생성합니다. 첫 번째 서브플롯은 2D 플롯이고, 두 번째 서브플롯은 3D 플롯입니다.

fig = plt.figure(figsize=plt.figaspect(2.))
fig.suptitle('A Tale of 2 Subplots')

2D 플롯 생성

이 단계에서는 감쇠 진동의 2D 플롯을 생성합니다.

ax1 = fig.add_subplot(2, 1, 1)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
t3 = np.arange(0.0, 2.0, 0.01)

ax1.plot(t1, f(t1), 'bo',
         t2, f(t2), 'k--', markerfacecolor='green')
ax1.grid(True)
ax1.set_ylabel('Damped oscillation')

3D 플롯 생성

이 단계에서는 사인파의 3D 플롯을 생성합니다.

ax2 = fig.add_subplot(2, 1, 2, projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

surf = ax2.plot_surface(X, Y, Z, rstride=1, cstride=1,
                        linewidth=0, antialiased=False)
ax2.set_zlim(-1, 1)

플롯 표시

이 단계에서는 그림을 표시합니다.

plt.show()

요약

이 랩에서는 Matplotlib 을 사용하여 2D 및 3D 플롯을 모두 포함하는 그림을 만들었습니다. 2D 플롯은 감쇠 진동을 표시했고, 3D 플롯은 사인파를 표시했습니다. NumPy 를 사용하여 배열을 생성하고 3D 플로팅을 위해 mpl_toolkits 을 사용했습니다.