Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để bật ffmpeg đúng cách cho matplotlib.animation?

Để bật ffmpeg cho matplotlib.animation , chúng tôi có thể thực hiện các bước sau -

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con.

  • Đặt ffmpeg thư mục.

  • Tạo một hình mới hoặc kích hoạt một hình hiện có, sử dụng figure () phương pháp.

  • Thêm 'ax1' vào hình như một phần của sự sắp xếp lô phụ.

  • Vẽ dải phân cách dựa trên các trục có sẵn.

  • Tạo dữ liệu ngẫu nhiên được vẽ biểu đồ, để hiển thị dữ liệu dưới dạng hình ảnh, tức là trên máy quét 2D thông thường.

  • Tạo thanh màu cho ScalarMappable ví dụ, cb .

  • Đặt tiêu đề làm khung hiện tại.

  • Tạo danh sách các bản đồ màu.

  • Tạo hoạt ảnh bằng cách gọi liên tục một hàm, tạo hoạt ảnh. Hàm tạo dữ liệu ngẫu nhiên mới, sau đó sử dụng imshow () để hiển thị dữ liệu dưới dạng hình ảnh.

  • Nhận một bản sao của ffmpeg dựa trên Pipe nhà văn.

  • Lưu hình động hiện tại.

Ví dụ

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)

Đầu ra

Khi chúng tôi thực thi mã, nó sẽ tạo một tệp mp4 với tên 'plot.mp4' và lưu nó trong Thư mục Dự án.