Matplotlib에서 3D plot_surface에 애니메이션 효과를 주기 위해 다음 단계를 수행할 수 있습니다.-
- 메시 그리드 수에 대한 변수 초기화 (N) , 초당 빈도 (fps) 함수 호출 및 프레임 번호 (frn) .
- x 만들기 , y 및 z 곡선에 대한 배열입니다.
- z-배열을 만드는 함수 만들기 람다 함수를 사용합니다.
- 애니메이션 클래스에 함수를 전달하려면 , 이전 플롯을 제거하고 x를 사용하여 표면을 플롯하는 사용자 정의 함수를 만듭니다. , y 및 z-배열
- 새 그림을 만들거나 기존 그림을 활성화합니다.
- 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.50, 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) ax.axis('off') plt.show()
출력