Python 如何在matplotlib中设置轮廓标签的动画?

Python 如何在matplotlib中设置轮廓标签的动画?,python,matplotlib,animation,contour,Python,Matplotlib,Animation,Contour,我用它作为创建大气压力等高线动画的框架。我已经在下面粘贴了答案代码,我用它作为指南。这个答案没有标注轮廓。我的问题是,如何使用以下内容设置轮廓标签的动画: ax.clabel(p[0], inline=1, fontsize=10) 我喜欢下面的模型,因为它没有清除函数中的ax。我知道我可以清除ax作为动画函数的一部分,并重新打印和重新标记轮廓,但我不想这样做,因为在我的项目中,我有其他绘图,我只是在更新函数中的数据,因此无法清除ax。我想我需要删除旧标签并添加新标签,但我不知道如何做到这一点

我用它作为创建大气压力等高线动画的框架。我已经在下面粘贴了答案代码,我用它作为指南。这个答案没有标注轮廓。我的问题是,如何使用以下内容设置轮廓标签的动画:

ax.clabel(p[0], inline=1, fontsize=10)
我喜欢下面的模型,因为它没有清除函数中的
ax
。我知道我可以清除
ax
作为动画函数的一部分,并重新打印和重新标记轮廓,但我不想这样做,因为在我的项目中,我有其他绘图,我只是在更新函数中的数据,因此无法清除
ax
。我想我需要删除旧标签并添加新标签,但我不知道如何做到这一点

附加问题:据我所知,轮廓是唯一一种不能简单重置动画函数中数据的绘图类型。为什么会这样

下面是我用作模板的代码:

import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
import time

x= np.linspace(0,3*np.pi)
X,Y = np.meshgrid(x,x)
f = lambda x,y, alpha, beta :(np.sin(X+alpha)+np.sin(Y*(1+np.sin(beta)*.4)+alpha))**2
alpha=np.linspace(0, 2*np.pi, num=34)
levels= 10
cmap=plt.cm.magma


fig, ax=plt.subplots()
props = dict(boxstyle='round', facecolor='wheat')
timelabel = ax.text(0.9,0.9, "", transform=ax.transAxes, ha="right", bbox=props)
t = np.ones(10)*time.time()
p = [ax.contour(X,Y,f(X,Y,0,0), levels, cmap=cmap ) ]

def update(i):
    for tp in p[0].collections:
        tp.remove()
    p[0] = ax.contour(X,Y,f(X,Y,alpha[i],alpha[i]), levels, cmap= cmap) 
    t[1:] = t[0:-1]
    t[0] = time.time()
    timelabel.set_text("{:.3f} fps".format(-1./np.diff(t).mean()))  
    return p[0].collections+[timelabel]

ani = matplotlib.animation.FuncAnimation(fig, update, frames=len(alpha), 
                                         interval=10, blit=True, repeat=True)
plt.show()