Matplotlib FuncAnimation将新框架放在先前的框架之上

问题描述 投票:0回答:1

我是Matplotlib的新手,正在尝试创建包含numpy.random.randn()生成的1,000,000个随机数的数组的动画直方图。第一帧是数组的100个第一元素的直方图。之后,我向先前的数组中添加了一个元素,并绘制了新的直方图。我想在清晰的白色背景上看到每个新帧,但实际上以前的帧从未消失(请参见gif)。我已经搜索了很长时间,但找不到任何解决方案。

请告诉我哪里出了问题以及如何正确执行?另外,每个新框架都有不同的颜色,如何使所有框架使用相同的颜色?

下面是代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from numpy.random import randn
import seaborn as sns

fig = plt.figure(figsize = (5,5))
ax1 = plt.axes(xlim = (-5,5))
line, = ax1.plot([],[])

x = randn(1000000)

def init():
    plt.clf()
    plt.cla()
    return fig,ax1

def animate(i):
    n = x[:i+99]    
    ax1 = sns.distplot(n,bins=21)
    ax1.set_title("Seaborn distplot, n="+str(i+99))
    return fig

ani = animation.FuncAnimation(fig,animate,init_func = init,interval = 100)

plt.show()

非常感谢。

python matplotlib animation
1个回答
0
投票

plt.cla()移动到动画功能,并将其放置在轴元素上方。

© www.soinside.com 2019 - 2024. All rights reserved.