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

matplotlib.animation에 대해 ffmpeg를 올바르게 활성화하는 방법은 무엇입니까?

<시간/>

matplotlib.animation에 대한 ffmpeg를 활성화하려면 , 우리는 다음 단계를 수행할 수 있습니다 -

  • Figure 크기를 설정하고 서브플롯 사이와 주변의 패딩을 조정합니다.

  • ffmpeg 설정 디렉토리.

  • Figure()를 사용하여 새 Figure를 생성하거나 기존 Figure를 활성화합니다. 방법.

  • 'ax1' 추가 하위 플롯 배열의 일부로 그림에.

  • 기존 축을 기준으로 구분선을 플로팅합니다.

  • 데이터를 2D 일반 래스터와 같이 이미지로 표시하기 위해 플로팅할 임의의 데이터를 생성합니다.

  • ScalarMappable용 컬러바 만들기 인스턴스, cb .

  • 제목을 현재 프레임으로 설정합니다.

  • 컬러맵 목록을 만드세요.

  • animate라는 함수를 반복적으로 호출하여 애니메이션을 만듭니다. 이 함수는 새로운 임의의 데이터를 생성한 다음 imshow()를 사용합니다. 데이터를 이미지로 표시하는 방법입니다.

  • 파이프 기반 ffmpeg 인스턴스 가져오기 작가.

  • 현재 애니메이션 피규어를 저장합니다.

예시

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from mpl_toolkits.axes_grid1 import make_axes_locatable

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
plt.rcParams['animation.ffmpeg_path'] = 'ffmpeg'

fig = plt.figure()
ax = fig.add_subplot(111)
div = make_axes_locatable(ax)
cax = div.append_axes('right', '5%', '5%')
data = np.random.rand(5, 5)
im = ax.imshow(data)
cb = fig.colorbar(im, cax=cax)
tx = ax.set_title('Frame 0')

cmap = ["copper", 'RdBu_r', 'Oranges', 'cividis', 'hot', 'plasma']

def animate(i):
   cax.cla()
   data = np.random.rand(5, 5)
   im = ax.imshow(data, cmap=cmap[i%len(cmap)])
   fig.colorbar(im, cax=cax)
   tx.set_text('Frame {0}'.format(i))

ani = animation.FuncAnimation(fig, animate, frames=10)
FFwriter = animation.FFMpegWriter()
ani.save('plot.mp4', writer=FFwriter)

출력

코드를 실행하면 'plot.mp4'라는 이름의 mp4 파일이 생성되어 프로젝트 디렉토리에 저장됩니다.