我用pyplot制作了一个轮廓场的动画,并希望将其保存为电影文件。不幸的是,当我保存它时,我得到了一个正确格式的文件,我可以用VLC打开它,但它只包含一到两帧。
这是我正在使用的代码的简化版本:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# Initialize figure and axes
fig = plt.figure()
ax = fig.add_subplot(111)
# Initialize mesh
x = np.r_[-5:5:100j]
X, Y = np.meshgrid(x, x)
# Computes the data and yields them
def data_generator(X, Y, dt):
for t in np.r_[:10:dt]:
yield t, np.tanh(Y*(2+t)) + np.sqrt(np.abs(X))
# Plots the given solution on the given axes
def plotter(data, ax, X, Y):
ax.clear()
t, field = data
C = ax.contour(X, Y, field)
ax.set_title('Time: {0:.1f}'.format(t))
return C
# Animation object
anim = FuncAnimation(fig, plotter, frames=data_generator(X, Y, 0.1),
interval=100, repeat=False, fargs=(ax,X,Y))
anim.save('animation.mp4')
plt.show()
我在Arch linux上使用python-3.5.0
,matplotlib-1.5.0
。我安装了ffmpeg-2.8.2
。我尝试了不同的格式(例如avi
,mkv
,mov
),我也尝试明确选择ffmpeg
和ffmpeg_file
作家。问题不在于我的硬盘空间不足。我还应该检查什么?