【问题标题】:Why can't I set blit=True in calls to matplotlib.animation.FuncAnimation since 1.5.0?为什么自 1.5.0 起我不能在调用 matplotlib.animation.FuncAnimation 时设置 blit=True?
【发布时间】:2015-11-12 14:52:19
【问题描述】:

自从更新到 matplotlib 1.5.0,

matplotlib.animation.FuncAnimation(fig, func, init_func=func,
                                   frames=frames, 
                                   interval=1100,repeat_delay=2000, 
                                   blit=True)

结果

AttributeError: 'NoneType' 对象没有属性 'set_animated'

在 matplotlib/animation.py 第 1134 行,即

TimedAnimation.__init__(self, fig, **kwargs)

我需要设置blit=False 才能继续没有错误。

无论我如何更改 fig、func 等的值,都会发生这种情况,无论如何,这些值在 1.5.0 之前都可以正常工作。

1.5.0 中是否发生了导致此问题的更改?有什么我可以继续使用blit=True 的吗?

【问题讨论】:

  • 在 2.0 中仍然如此吗?
  • @Seanny123:是的。

标签: python python-2.7 matplotlib


【解决方案1】:

在我的具体情况下,我正在为分布在多个轴上的几条线设置动画。当我设置blit=True 时,我看到了同样的错误。解决方法是从我的 animate() 函数中更改 return 语句 - 在我从模板中获取的原始函数中,函数看起来像

def animate(i):
...
return lines,

需要改成

def animate(i):
...
return lines  # no comma

blit 参数必须告诉某些东西,将 animate 返回的每个元素都视为具有 set_animated 方法的艺术家 - 逗号会添加额外的层次结构层,即列表中的列表而不是艺术家列表.

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2011-09-06
    • 2015-09-12
    • 1970-01-01
    • 2014-09-23
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多