Python 添加新艺术家时,Matplotlib FuncAnimation帧未渲染

Python 添加新艺术家时,Matplotlib FuncAnimation帧未渲染,python,matplotlib,matplotlib-animation,Python,Matplotlib,Matplotlib Animation,我正在Matplotlib中制作一个动画,其中每隔几帧添加一个新的艺术家(特别是面片),但当我运行它时,添加新艺术家的每一帧都是完全空白的。我知道有一些问题,因为它的光碟工作时,我关闭,但我需要它打开。我返回在每个帧中创建或修改的每个形状,就像文档要求的那样。我正在使用MacOSX后端 我的代码与此类似: from random import random import matplotlib.pyplot as plt from matplotlib.animation import FuncA

我正在Matplotlib中制作一个动画,其中每隔几帧添加一个新的艺术家(特别是面片),但当我运行它时,添加新艺术家的每一帧都是完全空白的。我知道有一些问题,因为它的光碟工作时,我关闭,但我需要它打开。我返回在每个帧中创建或修改的每个形状,就像文档要求的那样。我正在使用MacOSX后端

我的代码与此类似:

from random import random
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig = plt.figure()
axe = fig.add_axes([0, 0, 1, 1], frameon=False)
circles = []

def update(i):
    if not i % 10:
        new_circle = plt.Circle((random(), random()), 0.05, color='black')
        axe.add_patch(new_circle)
        circles.append(new_circle)

    for circle in circles:
        circle.center = (random(), random())

    return circles

animation = FuncAnimation(fig, update, frames=60, interval=1000/30, repeat=False, blit=True)
plt.show()

这似乎是MacOSX后端中matplotlib的一个错误,因此解决方案只是通过使用不同的后端来解决它,或者如果可能的话不进行Blit。

这似乎是MacOSX后端中matplotlib的一个错误,因此,解决方案就是通过使用不同的后端来解决它,或者如果可能的话,不进行blitting。

您的代码似乎与我预期的一样工作。我使用的是Python 3.7.4、matplotlib v.3.1.3、Jupyter notebook 6.0.3(带笔记本后端)。我无法尝试MacOS后端atm。
add_patch
可能会导致axis扩展数据块的更新,这可能是您在Blit时遇到冲突的原因。尝试改用
add_artist
(这没有副作用)。在我设置的帧速率为30时,很难看到错误,但MacOSX后端始终存在错误。使用add_artist生成相同的问题。然而,切换到另一个后端(在我的例子中是TkAgg)修复了这个问题。我将把这个bug添加到matplotlib的github页面。你的代码似乎和我期望的一样工作。我使用的是Python 3.7.4、matplotlib v.3.1.3、Jupyter notebook 6.0.3(带笔记本后端)。我无法尝试MacOS后端atm。
add_patch
可能会导致axis扩展数据块的更新,这可能是您在Blit时遇到冲突的原因。尝试改用
add_artist
(这没有副作用)。在我设置的帧速率为30时,很难看到错误,但MacOSX后端始终存在错误。使用add_artist生成相同的问题。然而,切换到另一个后端(在我的例子中是TkAgg)修复了这个问题。我将把这个bug添加到matplotlib的github页面。