[英]matplotlib scatter animation; original plot always on screen
我的动画无法正常工作:
使用blit = True时,我始终会在屏幕上显示原始功能,没有它,我会对该功能进行每次更新,但都不希望这样做。
我非常感谢任何帮助,我在带有spyder IDE的Win7上使用了Anaconda SciPy软件包的Anaconda集合
我试过了animation.FuncAnimation()中的参数,但是没有运气,我勉强掌握了代码。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
def run():
x = range(100)
y = range(0, 1000, 10)
x2 = range(50)
y2 =range(0, 500, 10)
fig = plt.figure()
scat1 = plt.scatter(x, y)
ani = animation.FuncAnimation(fig, update_plot, blit = True)
plt.show()
def update_plot(i):
x = range(i, 100+i)
y = range(i, 1000+i, 10)
scat1 = plt.scatter(x,y)
return scat1,
run()
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
def run():
fig = plt.figure()
pathcol = plt.scatter([], [])
def init():
pathcol.set_offsets([[], []])
return [pathcol]
def update_plot(i, pathcol):
x = range(i, 100+i)
y = range(i, 1000+i, 10)
pathcol.set_offsets([(xi, yi) for xi, yi in zip(x, y)])
return [pathcol]
plt.xlim(-10, 200)
plt.ylim(-100, 1500)
ani = animation.FuncAnimation(fig, update_plot,
init_func=init,
interval=0,
blit=True, fargs=[pathcol])
plt.show()
run()
另外,在update_plot
内部,请确保使用pathcol.set_offsets
修改现有的 PathCollection
而不是再次调用plt.scatter
。 修改现有的Artist
将提高动画速度。
init
不带任何参数,但是我们要init
来指代pathcol
中创建run
。 因此,我感动init
里面run
功能,使得里面init
Python会发现pathcol
在封闭范围内run
。
由于fargs=[pathcol]
, update_plot
被传递pathcol
fargs=[pathcol]
,因此可以使update_plot
成为run
之外的函数。 但是由于init
嵌套在run
,出于对称性,我决定也将update_plot
放入run
内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.