gpt4 book ai didi

python - matplotlib funcanimation 更新函数被第一个参数调用两次

转载 作者:太空狗 更新时间:2023-10-30 01:19:55 26 4
gpt4 key购买 nike

浏览了一些关于 matplotlib 动画的教程并遇到了这个问题。我正在使用 matplotlib.animation funcanimation 如下:

import matplotlib.animation as animation
import numpy as np
from pylab import *

def ani_frame():
fig = plt.figure()
ax = fig.add_subplot(111)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)

im = ax.imshow(rand(7, 7), cmap='gray', interpolation='nearest')

tight_layout()

def update_img(n):
print(n)
tmp = rand(7, 7)
im.set_data(tmp)
return im

ani = animation.FuncAnimation(fig, update_img, np.arange(0, 20, 1), interval=200)
writer = animation.writers['ffmpeg'](fps=5)

ani.save('demo.mp4', writer=writer)
return ani

ani_frame()

这会生成以下输出:

001个2个3个4个5

等等。它两次调用第一个参数。我怎样才能避免这种情况?

最佳答案

您可以使用初始化函数并使用 init_func 参数将其提供给 FuncAnimation。这样第一次调用将在 init 函数而不是 update 函数上。

import matplotlib.animation as animation
import numpy as np
from pylab import *

def ani_frame():
fig = plt.figure()
ax = fig.add_subplot(111)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)

im = ax.imshow(rand(7, 7), cmap='gray', interpolation='nearest')

tight_layout()

def init():
#do nothing
pass

def update_img(n):
print(n)
tmp = rand(7, 7)
im.set_data(tmp)

ani = animation.FuncAnimation(fig, update_img, np.arange(0, 20, 1),
init_func=init, interval=200)
writer = animation.writers['ffmpeg'](fps=5)

ani.save('demo.mp4', writer=writer)
return ani

ani_frame()

这会打印出 0 1 2 3 ....

关于python - matplotlib funcanimation 更新函数被第一个参数调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989414/

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