[英]Python Matplotlib FuncAnimation + Saving
我是python的新手,我正在嘗試制作動畫,並使用matplotlibs FuncAnimation將其保存為某些視頻格式。 如果我運行以下代碼:
import numpy as np
import matplotlib.animation as ani
import matplotlib.pyplot as plt
azimuths = np.radians(np.linspace(0, 360, 360))
zeniths = np.arange(0, 8, 0.2)
rho, psi = np.meshgrid(zeniths, azimuths)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, polar=True)
ax.set_yticks([])
plt.grid()
def frame(i):
values_i = prob_density(rho ** 2, psi, i)
ax.contourf(psi, rho, values_i)
animation = ani.FuncAnimation(fig, frame, np.linspace(0, 1000, 10))
animation.save('video.mp4', writer='ffmpeg')
出現錯誤提示:
ValueError: outfile must be *.htm or *.html
由於這似乎與ffmpeg文件有關-這些文件位於
/anaconda3/bin/ffmpeg
我已經花了很長時間了,但是盡管這似乎是一個普遍的問題,但似乎無法找出解決方案。 感謝任何建議。
我從未使用過FuncAnimation,但是在matplotlib-example實例中必須首先初始化ffmpeg。 像這樣:
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def update_line(num, data, line):
line.set_data(data[..., :num])
return line,
# Set up formatting for the movie files
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)
fig1 = plt.figure()
data = np.random.rand(2, 25)
l, = plt.plot([], [], 'r-')
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('x')
plt.title('test')
line_ani = animation.FuncAnimation(fig1, update_line, 25, fargs=(data, l),
interval=50, blit=True)
line_ani.save('lines.mp4', writer=writer)
也許您可以嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.