gpt4 book ai didi

python - Matplotlib FuncAnimation,当 blit = true 时出错。

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:07 26 4
gpt4 key购买 nike

我正在尝试使用 FuncAnimation 和 Circle.set_radius() 制作扩展圆的动画。但是,动画仅在 blit = False 时起作用。代码如下:

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

fig, ax = plt.subplots()
plt.grid(True)
plt.axis([-0.6, 0.6, -0.6, 0.6])
circle1= plt.Circle([0,0],0.01,color="0.",fill=False, clip_on = True)
ax.add_patch(circle1)

dt = 1.0/20
vel = 0.1

def init():
circle1.set_radius(0.01)

def animate(i):
global dt, vel
r = vel * i * dt
circle1.set_radius(r)
return circle1,

anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=200, interval= 50, blit=True)

它返回此错误:

Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/matplotlib/artist.py", line 61, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/figure.py", line 1139, in draw
self.canvas.draw_event(renderer)
File "/usr/local/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 1809, in draw_event
self.callbacks.process(s, event)
File "/usr/local/lib/python2.7/site-packages/matplotlib/cbook.py", line 562, in process
proxy(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/cbook.py", line 429, in __call__
return mtd(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/animation.py", line 620, in _start
self._init_draw()
File "/usr/local/lib/python2.7/site-packages/matplotlib/animation.py", line 1166, in _init_draw
for a in self._drawn_artists:
TypeError: 'NoneType' object is not utterable

我使用的是 Mac 操作系统。当我更改 blit = False 时,动画将起作用。然而,每当我移动鼠标时,动画就会变慢。这是有问题的,因为我有一个单独的线程生成声音输出。在实践中,圆圈会碰到一些数据点并发出声音。结果他们不同步。请帮忙。

最佳答案

From the docs ,

If blit=True, func and init_func should return an iterable of drawables to clear.

因此 - 您需要将 returncircle1, 添加到您的函数 init() 中。另一个选项是在调用 FuncAnimation 时根本不指定 init_func - 您可能不需要它。如果没有它,动画可能会做你想做的事。

注意circle1后面的尾随逗号 - 这意味着返回一个(1个元素)元组,因此返回值是可迭代的必需的。您已在 animate 函数中使用了该函数。

关于python - Matplotlib FuncAnimation,当 blit = true 时出错。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068396/

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