在matplotlib python中降低动画速度

在matplotlib python中降低动画速度,python,animation,recursion,matplotlib,global-variables,Python,Animation,Recursion,Matplotlib,Global Variables,我有一个小问题,我正在matplotlib中制作动画,并且我正在使用旋转(函数)。我的问题是,我需要旋转我的对象,记住它的位置,然后在下一步旋转这个旋转的对象等等。我的想法是,我制作全局变量,在其中存储实际数据(变量ghost),我将使用下一个方法updateGhost()用我的绘图方法(drawMyObjects()更新它。 我的问题是,动画的速度在下降,它越来越慢,最后它冻结了。 你认为哪里会有问题?我试着检查记忆,看起来没问题。 当我旋转原始对象时,它工作得非常好(当我不需要记住新的旋转数

我有一个小问题,我正在matplotlib中制作动画,并且我正在使用旋转(函数)。我的问题是,我需要旋转我的对象,记住它的位置,然后在下一步旋转这个旋转的对象等等。我的想法是,我制作全局变量,在其中存储实际数据(变量ghost),我将使用下一个方法updateGhost()用我的绘图方法(drawMyObjects()更新它。 我的问题是,动画的速度在下降,它越来越慢,最后它冻结了。 你认为哪里会有问题?我试着检查记忆,看起来没问题。 当我旋转原始对象时,它工作得非常好(当我不需要记住新的旋转数据时) 我的问题在于简单方法updateHost(),因为不使用它,它工作得很好,但不是我需要的方式。 A将感谢您的帮助,谢谢大家。
编辑1:当它运行更长时间时:运行时错误:超过最大递归深度不知道为什么

def init():
line.set_data([], [])
return line,

ghost = ax.transData

def updateGhost(u):
    global ghost
    ghost=u

def drawMyObjects(i):

    global ghost

    td2dis = ax.transData
    td2dis2=ghost

    #1st Object
    radius=getOnlyRadius(f1,f2)
    rox,roy=setRotatePoint(radius,True)
    coords = td2dis.transform([rox,roy]) 
    tr = mpl.transforms.Affine2D().rotate_deg_around(coords[0], coords[1], 50*i/radius) 
    t = td2dis + tr

    #2nd Object
    radius2=radius+randomError(radius);
    rox2,roy2=setRotatePoint(radius2,True)
    coords2 = duch.transform([rox2,roy2]) 
    tr2 = mpl.transforms.Affine2D().rotate_deg_around(coords2[0], coords2[1], 1.5) 
    u = td2dis2 + tr2
    updateGhost(u)#it updates transData because I need to remember last position of my object

    robotBody = patches.Rectangle((x,y),sirkaRobota,dlzkaRobota,color='black',alpha=0.5,transform=t)
    ax.add_patch(robotBody)
    robotBody2 = patches.Rectangle((x,y),sirkaRobota,dlzkaRobota,color='black',alpha=0.1,transform=u)
    ax.add_patch(robotBody2)
    return robotBody,robotBody2


anim = animation.FuncAnimation(fig, drawMyObjects, frames=10000,init_func=init, interval=20, blit=True)

主要有两个问题:

1.)我使用递归计算矩阵(处理器终止)


2.)我没有删除添加的行(内存消耗)

您正在添加新的艺术家,但从未删除或删除旧的艺术家。感谢您的反应@tcaswell。你知道如何删除它们吗?我试过这个:plt.cla()plt.clf()或robotBody.remove(),但不起作用。