gpt4 book ai didi

python - 使用生成器时设置 matplotlib 动画的持续时间

转载 作者:行者123 更新时间:2023-11-28 21:19:08 25 4
gpt4 key购买 nike

如何在将 matplotlib 动画保存到文件时指定持续时间? Usually它将由 animation.FuncAnimation()frame 参数给出,但在使用生成器创建动画帧时则不会。例如。 using this example

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

def simData():
t_max = 10.0
dt = 0.05
x = 0.0
t = 0.0
while t < t_max:
x = np.sin(np.pi*t)
t = t + dt
yield x, t

def simPoints(simData):
x, t = simData[0], simData[1]
time_text.set_text(time_template%(t))
line.set_data(t, x)
return line, time_text

fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot([], [], 'bo', ms=10)
ax.set_ylim(-1, 1)
ax.set_xlim(0, 10)
time_template = 'Time = %.1f s' # prints running simulation time
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)

ani = animation.FuncAnimation(fig, simPoints, simData)
#plt.show()

ani.save('animation.mp4', writer="avconv", codec="libx264")

创建一个 20 秒的视频,显示大约。五秒的“模拟时间”,生成器在使用 plt.show() 显示时生成的帧的一半。

最佳答案

您在 FuncAnimation 上缺少 save_count 关键字。如果你传递给它一个生成器,那么你可以传递要保存的帧数:

ani = animation.FuncAnimation(fig, simPoints, simData, save_count=200)

迭代似乎一直持续到生成器耗尽或达到save_count。默认值是 100,尽管在源代码之外似乎没有非常清楚地记录它。

关于python - 使用生成器时设置 matplotlib 动画的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com