Matplotlib 3D 플롯 애니메이션

Beginner

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

소개

이 랩에서는 Matplotlib 을 사용하여 세 축 모두를 중심으로 회전하는 3D 플롯의 간단한 애니메이션을 만드는 방법을 안내합니다. 샘플 데이터 세트를 사용하여 기본 와이어프레임을 생성하고, 축 레이블을 설정하고, 축을 회전시킵니다.

VM 팁

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

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

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

라이브러리 및 데이터 세트 가져오기

먼저, 필요한 라이브러리와 데이터 세트를 가져와야 합니다. 이 예제에서는 3D 플롯을 생성하기 위해 matplotlibmpl_toolkits.mplot3d 라이브러리를 사용하고, 샘플 데이터 세트를 생성하기 위해 axes3d.get_test_data() 함수를 사용합니다.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

## Generate sample dataset
X, Y, Z = axes3d.get_test_data(0.05)

3D 플롯 생성

다음으로, plt.figure()fig.add_subplot() 함수를 사용하여 3D 플롯을 생성합니다. 또한 ax.plot_wireframe() 함수를 사용하여 데이터 세트를 와이어프레임으로 플롯합니다.

## Create 3D plot
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

## Plot wireframe
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)

축 레이블 설정

이제 ax.set_xlabel(), ax.set_ylabel(), 및 ax.set_zlabel() 함수를 사용하여 3D 플롯의 축 레이블을 설정합니다.

## Set axis labels
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

축 회전 및 플롯 업데이트

마지막으로, 완전한 고도, 방위각, 롤 및 모든 회전을 순환하는 for 루프를 사용하여 축을 회전하고 플롯을 업데이트합니다. ax.view_init() 함수를 사용하여 축 뷰와 제목을 업데이트하고, plt.title(), plt.draw(), 및 plt.pause() 함수를 사용하여 애니메이션을 표시합니다.

## Rotate the axes and update the plot
for angle in range(0, 360*4 + 1):
    ## Normalize the angle to the range [-180, 180] for display
    angle_norm = (angle + 180) % 360 - 180

    ## Cycle through a full rotation of elevation, then azimuth, roll, and all
    elev = azim = roll = 0
    if angle <= 360:
        elev = angle_norm
    elif angle <= 360*2:
        azim = angle_norm
    elif angle <= 360*3:
        roll = angle_norm
    else:
        elev = azim = roll = angle_norm

    ## Update the axis view and title
    ax.view_init(elev, azim, roll)
    plt.title('Elevation: %d°, Azimuth: %d°, Roll: %d°' % (elev, azim, roll))

    ## Display animation
    plt.draw()
    plt.pause(.001)

요약

이 랩에서는 Matplotlib 을 사용하여 세 축 모두를 중심으로 회전하는 3D 플롯의 간단한 애니메이션을 만드는 방법을 배웠습니다. 샘플 데이터 세트를 사용하여 기본 와이어프레임을 만들고, 축 레이블을 설정하고, 축을 회전시켰습니다. 또한 ax.view_init(), plt.title(), plt.draw(), 및 plt.pause() 함수를 사용하여 플롯을 업데이트하고 애니메이션을 표시하는 방법을 배웠습니다.