Python Matplotlib FuncAnimation,blit=true时出错。

Python Matplotlib FuncAnimation,blit=true时出错。,python,animation,matplotlib,Python,Animation,Matplotlib,我正在尝试使用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.C

我正在尝试使用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
我正在使用MacOS。当我更改blit=False时,动画将起作用。但是,每当我在那里移动鼠标时,动画就会减慢。这是有问题的,因为我有一个单独的线程生成声音输出。实际上,圆圈会碰到一些数据点并发出声音。因此,它们不同步。请帮忙

如果blit=True,则func和init_func应返回要清除的可绘图项的iterable

因此,您需要在函数
init()
中添加
return circle1,
。另一个选项是在对
FuncAnimation
的调用中根本不指定
init_func
——您可能不需要它。动画可能会做你想要的没有它

注意圆圈1之后的尾随逗号-这意味着返回(1个元素)元组,因此返回值可根据需要进行调整。在
设置动画
功能中已经有了此功能