【问题标题】:How do I animate circles and line with matplotlib?如何使用 matplotlib 为圆圈和线条设置动画?
【发布时间】:2019-04-17 01:09:14
【问题描述】:

我可以制作六个圆的动画,也可以制作一条线的动画。当我尝试为两者设置动画时,我无法弄清楚 init() 和 animate() 应该返回什么。对于六个圆圈,我“返回元组(引脚)”,对于线,我“返回线”。每个引脚都是“类'matplotlib.patches.Circle'”,行是“类'matplotlib.lines.Line2D'。”

当我尝试为圆和线设置动画时,我尝试了许多不同的返回语句,但均未成功。以下是部分结果:

return line, tuple(pins) GIVES 'tuple' object has no attribute 'set_animated'

return tuple(pins) + (line) GIVES 只能将元组(不是“Line2D”)连接到元组

return tuple(pins) + tuple(line) GIVES 'Line2D' object is not iterable

【问题讨论】:

标签: animation matplotlib


【解决方案1】:

请注意,如果您使用 blitting,您只需要从动画函数返回一些内容。

来自documentation

如果blit == True,func 必须返回所有被修改或创建的艺术家的迭代。位图算法使用此信息来确定图形的哪些部分必须更新。如果blit == False,则返回值未使用,在这种情况下可以省略。

因此,完全省略 return 可能是最简单的选择。

如果您需要/想要使用 blitting,您需要返回一个可迭代的艺术家。这可以例如是一个元组或一个列表。不幸的是,目前尚不清楚问题中的pins 是什么。

假设pins是一个列表,

return pins + [line]

或者如果你想把它列成一个列表,

return list(pins) + [line]

假设pins 是一个元组,

return pins + (line,)

或者如果你想把它变成一个元组,

return tuple(pins) + (line,)

【讨论】:

  • 从动画中移除 blit 有效。由于 pin 是一个列表,因此添加了一个行列表。由于我不再记得的原因,创建一个元组是我的问题的原因,因为我没有正确处理元组。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2021-11-03
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多