Matplotlib Animation 使用 cartopy 在之前的帧上绘制

Matplotlib Animation plotting over previous frames using cartopy

我正在尝试使用 cartopy 轴和 matplotlib 制作动画。我尝试过的任何方式要么直接在数据上绘制而不清除以前的图像,要么生成多个面板导致动画看起来像这样:

这是生成动画的代码(有点酷,但不是我想要的):

import pylab as PP

fig = PP.figure(figsize=(10, 6))
#ax = fig.add_subplot(1,1,1,projection=ccrs.Robinson(central_longitude=270))
ax = PP.axes(projection=ccrs.Robinson(central_longitude=270))

frames = eofs.shape[0]        # Number of frames
eof_num=0

    
def init():
    
    return animate(0)


def animate(frame):
    
    cdata,clons = add_cyclic_point(eofs[frame,eof_num,...],_z500.lon)

    levels = np.linspace(-60,60,21)
    cplt = []
    cplt = ax.contourf(clons, _z500.lat, cdata, transform=ccrs.PlateCarree(), levels=levels, cmap='RdBu_r')
    
    sigLats, sigLons = nbh.sig_pts_from_pvalues(eof_reg_pvals[frame,eof_num,...],_z500.lat,_z500.lon)
    PP.plot(sigLons[::4], sigLats[::4], 'k.', markersize=1, transform=ccrs.PlateCarree())

    ax.coastlines()
    ax.set_global()
    ax.set_title('EOF{} | SEOF#{} | {}'.format(eof_num+1,frame+1,_z500.dates[:-1][::5][frame]))

    cb = PP.colorbar(cplt,fraction=0.02)
    cb.set_label(label='z500 [m]', fontsize=12)
    
    return(cplt)


ani = animation.FuncAnimation(fig, animate, frames, interval=0.01, blit=False,
                              init_func=init, repeat=True)

ani.save('test.mp4', writer=animation.FFMpegWriter(fps=4))

PP.close(fig)

无法弄清楚我在这里做错了什么。
谢谢!

看看这个
您应该使用 ax.cla() 清除 animate 函数开头的 ax 并将颜色条定义移到该函数之外。