Matplotlib底图Hexbin动画:清除帧之间的hexbins

时间:2018-05-24 08:24:49

标签: python matplotlib matplotlib-basemap

我在底图图像上设置了一个hexbin热图的动画,但是在开始下一帧之前无法弄清楚如何删除之前的六边形。我想用一些累积来制作动画,但是按照选定的间隔进行重置(我的数据有时间维度,我希望显示给定年份的所有点数,日复一日,然后擦除效果并显示下一年)。我想我需要存储图层,并使用它的.remove()方法,但我无法弄明白。

@Override
protected void onDestroy() {
    aSync.metronome.stopReleaseAudio(); //calls the stopRelease()
    aSync.cancel(true);
    super.onDestroy();
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,我将使用全局数组来存储hexbin()返回的对象。在预定义的时间间隔,我将删除这些对象,并清空数组的内容,然后重复。

fig, ax = plt.subplots()

def animate(i):
    x0,y0 = np.random.random(size=(2,))*4-2
    x = np.random.normal(loc=x0, size=(1000,))
    y = np.random.normal(loc=y0, size=(1000,))

    if len(prevlayers)>=maxlayers:
        for layer in prevlayers:
            layer.remove()
        prevlayers[:] = []    

    hexlayer = ax.hexbin(x,y, gridsize=10, alpha=0.5)
    prevlayers.append(hexlayer)
    return hexlayer,

maxlayers = 3
prevlayers = []
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=12)

enter image description here