Python 在matplotlib FuncAnimation中设置blit后,地物自定义将被删除
我需要增加matplotlib FuncAnimation的FPS。Blitting是一种方式,但它破坏了图形样式和自定义。应用blit时如何保持样式 我正在尝试设置时间序列数据的动画。我使用matplotlib开发了一个类来实现这一点,但是fps非常糟糕。 然后,我尝试在一帧中同时绘制多个数据点,以加快渲染速度,虽然效果更好,但效果仍然不理想。 最后,我读到了关于在动画中使用blit的内容,情节画得很快,但是当我打开blit时,我所有的样式都消失了。 我是matplotlib的新手,已经花了好几天的时间调试了所有的东西,但这个问题无法解释。 如果有人能找到问题/提出其他改进fps的方法,我将不胜感激 完整代码- 我还在帖子中添加了一个裁剪代码,以再现人物是如何全黑的,而不是浅蓝色和seaborn风格 进口大熊猫 导入matplotlib.animation 将matplotlib.pyplot作为plt导入Python 在matplotlib FuncAnimation中设置blit后,地物自定义将被删除,python,matplotlib,animation,blit,Python,Matplotlib,Animation,Blit,我需要增加matplotlib FuncAnimation的FPS。Blitting是一种方式,但它破坏了图形样式和自定义。应用blit时如何保持样式 我正在尝试设置时间序列数据的动画。我使用matplotlib开发了一个类来实现这一点,但是fps非常糟糕。 然后,我尝试在一帧中同时绘制多个数据点,以加快渲染速度,虽然效果更好,但效果仍然不理想。 最后,我读到了关于在动画中使用blit的内容,情节画得很快,但是当我打开blit时,我所有的样式都消失了。 我是matplotlib的新手,已经花了好
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后开始正确显示!