Matplotlib 3D 회전 플롯 저장하기
Matplotlib으로 생성한 3D 플롯을 회전시키며 애니메이션처럼 보여주려면 view_init() 메서드를 활용하면 됩니다. 아래 단계를 따라 하면 3D 와이어프레임 플롯이 부드럽게 회전하는 모습을 구현할 수 있습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변 여백(padding)을 조정합니다.
- 새 figure를 생성하거나 기존 figure를 활성화합니다.
- 서브플롯 배치의 일부로 figure에 Axes(축) 객체를 추가합니다.
- 테스트 데이터 세트가 담긴 튜플(X, Y, Z)을 반환받습니다.
- 3D 와이어프레임(wireframe)을 플롯합니다.
- 각도를 변경하며 축을 회전시킵니다.
- 현재 figure를 다시 그립니다(redraw).
- 몇 초간 GUI 이벤트 루프를 실행해 애니메이션 효과를 줍니다.
- 최종 결과를 화면에 표시하려면 show() 메서드를 사용합니다.
예제 코드
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y, Z = axes3d.get_test_data(0.1)
ax.plot_wireframe(X, Y, Z, rstride=5, cstride=5)
for angle in range(0, 360):
ax.view_init(30, angle)
plt.draw()
plt.pause(.001)
plt.show()실행 결과
위 코드를 실행하면 3D 와이어프레임이 0도부터 360도까지 회전하는 애니메이션이 화면에 출력됩니다.
파일로 저장하는 방법
회전 애니메이션을 GIF나 MP4 파일로 저장하려면 matplotlib.animation.FuncAnimation을 사용하는 것이 좋습니다. 프레임 업데이트 함수 안에서 ax.view_init(30, angle)을 호출한 뒤, anim.save('rotation.gif', writer='pillow') 또는 anim.save('rotation.mp4', writer='ffmpeg') 형태로 저장하면 완성된 회전 애니메이션 파일을 얻을 수 있습니다.