我读了一些与我相似的问题,但没有一个答案有效。。。我想制作一个动画,一个接一个地绘制列表中的点。问题是,从12级开始,它就停止了。我测试了gc.collect(generation=1(,但它不起作用。。。这是我的代码的末尾:
@mlab.animate(delay=100)
def updateAnimation():
k=0
for k in range(len(X)):
mlab.points3d(X[k], Y[k], Z[k], S[k], color=C[k], scale_factor=10)
yield
updateAnimation()
mlab.show()
X、 Y、Z、S和C是长度为136的列表。我使用的是python 3.9.12和mayavi 4.8.0。这可能是一些愚蠢的设置。。。但我是马亚维的新手。
非常感谢您的真知灼见。
p3d = mlab.points3d(X[0], Y[0], Z[0], S[0], color=C[0], scale_factor=10)
@mlab.animate(delay=100)
def updateAnimation():
k=0
for k in range(len(X)):
p3d.set(x=X[k], y=Y[k], z=Z[k], s=S[k], color=C[k])
yield
ua = updateAnimation()
mlab.show()
`
这个(未经测试的代码(是从这里复制的http://docs.enthought.com/mayavi/mayavi/mlab.html#id10
创建可视化一次,然后在updateAnimation过程中对其进行更新。ua = updateAnimation()
将结果存储在一个变量中,这样即使从异步协程调用动画,动画也能继续运行。如果数据的形状保持不变,则使用set()
,否则使用reset()
。这适用于point3d和plot3d,但不幸的是,并非适用于mlab中的所有绘图。