matplotlib.animation के लिए ffmpeg इनेबल करने के लिए, हम निम्न चरण अपना सकते हैं:
- फिगर साइज सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग एडजस्ट करें।
- ffmpeg डायरेक्टरी सेट करें।
- 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 फाइल बनाएगा और इसे प्रोजेक्ट डायरेक्टरी में सेव करेगा।