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