python - matplotlib 动画持续时间

标签 python animation matplotlib

下面的代码显示并保存了连续的随机矩阵动画。我的问题是如何调整我保存的动画的持续时间。我这里唯一的参数 fps 和 dpi 首先控制帧剩余多少秒,第二个控制图像的质量。 我想要的是实际控制将要保存的帧数 根据矩阵实际存储的帧数。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()

N = 5

A = np.random.rand(N,N)
im = plt.imshow(A)

def updatefig(*args):
    im.set_array(np.random.rand(N,N))
    return im,

ani = animation.FuncAnimation(fig, updatefig, interval=200, blit=True) 

ani.save('try_animation.mp4', fps=10, dpi=80) #Frame per second controls speed, dpi       controls the quality 
plt.show()

我想知道是否应该添加更多参数。我试图在 matplotlib 的类文档中寻找合适的,但我没有成功:

http://matplotlib.org/api/animation_api.html#module-matplotlib.animation

最佳答案

多年后,我构建了这个示例,每次我需要查看动画参数之间的关系时,我都会回过头来查看。我决定在这里将它分享给可能觉得它有用的人。

长话短说:

  • 对于保存的动画,持续时间将为frames * (1 / fps) (以秒为单位)
  • 对于显示动画,持续时间将为frames * interval / 1000 (以秒为单位)

下面的代码允许您在提供即时视觉反馈的环境中使用此设置。

这段代码构建了一个根据参数滴答作响的时钟:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation


fig = plt.figure(figsize=(16, 12))
ax = fig.add_subplot(111)
# You can initialize this with whatever
im = ax.imshow(np.random.rand(6, 10), cmap='bone_r', interpolation='nearest')


def animate(i):
    aux = np.zeros(60)
    aux[i] = 1
    image_clock = np.reshape(aux, (6, 10))
    im.set_array(image_clock)

ani = animation.FuncAnimation(fig, animate, frames=60, interval=1000)
ani.save('clock.mp4', fps=1.0, dpi=200)
plt.show()

这将生成并保存如下所示的动画:

enter image description here

所以重点是随着时间的流逝,黑色方 block 将沿着白色大方 block 移动。有 60 个白盒子,因此您可以构建一个在一分钟内走完它的时钟。

现在,需要注意的重要事项是有两个参数决定了黑匣子移动的速度:intervalanimation.FuncAnimation ani.save 中的函数和“fps”功能。第一个控制您将显示的动画的速度,第二个控制您将保存的动画的速度。

按照上面的代码,您将生成 60 帧,它们以每秒 1 帧的速度显示。这意味着时钟每秒滴答作响。如果你想让保存的动画时钟每两秒滴答一次,那么你应该设置fps=0.5 .如果你想让显示的动画时钟每两秒点击一次你应该设置interval=2000 .

[我会尽快编辑更长的解释]

关于python - matplotlib 动画持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22010586/

相关文章:

python - ipython:如何设置终端宽度

android - Jetpack Compose RC01 中缺少 AnimatedImageVector

animation - React - 单个组件的动画安装和卸载

python - 由图片组成的情节中的主标题超出范围

python - 使用 matplotlib 绘制点数图

python - 等同于 Python 中 R 的 removeSparseTerms

python - 我的 LSTM 学习,损失减少,但数值梯度与分析梯度不匹配

python - 无法在 Google App Engine 中上传文件

ios - 如何在基于导航的应用程序中更改 Push 和 Pop 动画

django - 如何在 matplotlib 中向图形添加绘图?