Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Matplotlib에서 회전하는 3D 그래프에 애니메이션 효과 주기

<시간/>

matplotlib에서 회전하는 3D 그래프를 만들려면 애니메이션 을 사용할 수 있습니다. 함수를 반복적으로 호출하기 위한 클래스입니다.

단계

  • 메쉬 그리드 수, 함수를 호출하는 초당 빈도, 프레임 수에 대한 변수를 초기화합니다.

  • 곡선에 대한 x, y 및 z 배열을 만듭니다.

  • 람다 함수를 사용하여 z 배열을 만드는 함수를 만듭니다.

  • 애니메이션 클래스에 함수를 전달하려면 사용자 정의 함수를 만들어 이전 플롯을 제거하고 x, y 및 zarray를 사용하여 표면을 플롯합니다.

  • 새 그림을 만들거나 기존 그림을 활성화하세요.

  • subplots() 메서드를 사용하여 subplot 배열을 추가합니다.

  • set_zlim() 을 사용하여 Z축 제한을 설정합니다. 방법.

  • 애니메이션 호출 표면 플롯을 애니메이션화하는 클래스입니다.

  • 애니메이션 플롯을 표시하려면 show() 를 사용하십시오. 방법.

예시

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
N = 50
fps = 250
frn = 75

x = np.linspace(-4, 4, N + 1)
x, y = np.meshgrid(x, x)
zarray = np.zeros((N + 1, N + 1, frn))

f = lambda x, y, sig: 1 / np.sqrt(sig) * np.exp(-(x ** 2 + y ** 2) / sig ** 2)

for i in range(frn):
   zarray[:, :, i] = f(x, y, 1.5 + np.sin(i * 2 * np.pi / frn))

def change_plot(frame_number, zarray, plot):
   plot[0].remove()
   plot[0] = ax.plot_surface(x, y, zarray[:, :, frame_number], cmap="afmhot_r")

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

plot = [ax.plot_surface(x, y, zarray[:, :, 0], color='0.75', rstride=1,
cstride=1)]
ax.set_zlim(0, 1.1)
ani = animation.FuncAnimation(fig, change_plot, frn, fargs=(zarray, plot),
interval=1000 / fps)
ani.save('526.gif')

plt.show()

출력

Matplotlib에서 회전하는 3D 그래프에 애니메이션 효과 주기