在matplotlib FuncAnimation中设置blit后,图形自定义设置将被删除

时间:2019-02-19 13:56:52

标签: python matplotlib animation blit

我需要提高matplotlib FuncAnimation的FPS。划线是一种方法,但它破坏了图形样式和自定义。在应用blit时如何保留样式?

我正在尝试制作时间序列数据的动画。我开发了一个类来使用matplotlib做到这一点,但是fps太可怕了。 然后,我尝试在一个帧中一次绘制多个数据点,以加快渲染速度,效果更好,但结果仍然不足。 最终,我读到了有关在FuncAnimation中使用blit的信息,该图绘制得很快,但是当我打开blit时,我的所有样式都消失了。 我是matplotlib的新手,已经花了几天时间调试所有东西,但是这个问题是无法理解的。 如果有人能找到问题/建议其他方法来改善fps,我将不胜感激。

完整代码-https://github.com/namajain/EEGanalysis/blob/master/src/viz/emdVizWithBlit.py

我还在帖子中添加了一个修整后的代码,以重现图形是全黑的,而不是浅蓝色和淡淡的风格

进口熊猫 导入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()

预期

Image of emdViz

实际上出现的是所有蓝色区域都变成黑色,并且轴正确显示 enter image description here

0 个答案:

没有答案