Python 在matplotlib FuncAnimation中设置blit后,地物自定义将被删除

Python 在matplotlib FuncAnimation中设置blit后,地物自定义将被删除,python,matplotlib,animation,blit,Python,Matplotlib,Animation,Blit,我需要增加matplotlib FuncAnimation的FPS。Blitting是一种方式,但它破坏了图形样式和自定义。应用blit时如何保持样式 我正在尝试设置时间序列数据的动画。我使用matplotlib开发了一个类来实现这一点,但是fps非常糟糕。 然后,我尝试在一帧中同时绘制多个数据点,以加快渲染速度,虽然效果更好,但效果仍然不理想。 最后,我读到了关于在动画中使用blit的内容,情节画得很快,但是当我打开blit时,我所有的样式都消失了。 我是matplotlib的新手,已经花了好

我需要增加matplotlib FuncAnimation的FPS。Blitting是一种方式,但它破坏了图形样式和自定义。应用blit时如何保持样式

我正在尝试设置时间序列数据的动画。我使用matplotlib开发了一个类来实现这一点,但是fps非常糟糕。 然后,我尝试在一帧中同时绘制多个数据点,以加快渲染速度,虽然效果更好,但效果仍然不理想。 最后,我读到了关于在动画中使用blit的内容,情节画得很快,但是当我打开blit时,我所有的样式都消失了。 我是matplotlib的新手,已经花了好几天的时间调试了所有的东西,但这个问题无法解释。 如果有人能找到问题/提出其他改进fps的方法,我将不胜感激

完整代码-

我还在帖子中添加了一个裁剪代码,以再现人物是如何全黑的,而不是浅蓝色和seaborn风格

进口大熊猫 导入matplotlib.animation 将matplotlib.pyplot作为plt导入

class emdVizBlit():

def __init__(self, rd=None, csv=None, ncomp=5, fplot=20, xran=128, fa=.8):

    self.rd=[1]*100000
    self.nComp = ncomp
    self.nPoints = fplot
    self.xRange = xran
    self.cMap = plt.get_cmap('inferno').colors
    self.freqAdjust = fa

def emdPlot(self):
    fig, ax = plt.subplots(nrows=self.nComp + 2, sharex=True, sharey=True)
    fig.set_facecolor('xkcd:light blue')
    fig.set_size_inches(19.3, 10.91)
    mng = plt.get_current_fig_manager()
    mng.window.showMaximized()
    fig.tight_layout()
    plt.style.use('seaborn-whitegrid')

    def getColor(j):
        return self.cMap[(len(self.cMap) - 1) // (self.nComp + 2) * (j)]

    def getLine(axe):

        ln, = axe.plot([], [], color=getColor(0), animated=True)
        return ln

    lines = [getLine(axe) for axe in ax]
    anim_running = True

    def absanimate(i):
        nonlocal ax

        # if isRedrawIter(i):
        # redrawPlotOutline(i)

        # plotBaseSignal(i)
        # plotImfSignal(i)
        # plotResidueSignal(i)
        return lines


    anim = matplotlib.animation.FuncAnimation(fig, absanimate, frames=len(self.rd) // self.nPoints,
                                              interval=self.nPoints / 256 * self.freqAdjust,
                                              repeat=False, blit=True)
    plt.show()


if __name__ == '__main__':
    ev = emdVizBlit()
    ev.emdPlot()
期望

实际显示的是所有蓝色区域变为黑色,轴显示正确

很有趣。我无法复制;当我运行代码时,它会给我预期的浅蓝色背景,所有轴标记都可见。您能否说明(1)操作系统,(2)正在使用的matplotlib版本,(3)正在使用的matplotlib后端?我怀疑时间间隔过短有问题。它被设置为低于1毫秒,这是matplotlib无论如何都无法实现的。你设置的时间间隔是否有效?例如,
interval=10
?Hi@ImportanceOfBeingErnest,它也不适用于时间间隔10,matplotlib是2.2.3,Win 10上的qt5agg后端和python 3.7 OK,我可以用matplotlib 2.2.3复制。不过,我不确定其间是否有错误修复。但您仍然可以尝试matplotlib 3.0.2,这对我来说很好。@ImportantanceOfBeingernest,谢谢,它在我更新到版本3后开始正确显示!有趣。我无法复制;当我运行代码时,它会给我预期的浅蓝色背景,所有轴标记都可见。您能否说明(1)操作系统,(2)正在使用的matplotlib版本,(3)正在使用的matplotlib后端?我怀疑时间间隔过短有问题。它被设置为低于1毫秒,这是matplotlib无论如何都无法实现的。你设置的时间间隔是否有效?例如,
interval=10
?Hi@ImportanceOfBeingErnest,它也不适用于时间间隔10,matplotlib是2.2.3,Win 10上的qt5agg后端和python 3.7 OK,我可以用matplotlib 2.2.3复制。不过,我不确定其间是否有错误修复。但您仍然可以尝试matplotlib 3.0.2,这对我来说很好。@ImportantanceOfBeingernest,谢谢,它在我更新到版本3后开始正确显示!