如何实现仅显示当前点并删除前序点的散点图动画?
实现仅显示当前点的散点图动画
你的现有代码会累积显示从第一个到第i个的所有点,要实现仅显示当前点、删除前序点的效果,只需要修改animate函数,每次只传入当前单个点的坐标即可,具体修改如下:
修改后的完整代码
import numpy as np import matplotlib.pyplot as plt from matplotlib import animation img = plt.imread("/Users/hadis/Desktop/project/5_Data/08_background.png") fig, ax = plt.subplots() plt.imshow(img, extent=[0,1170,-780,0]) # 假设new_x是已定义的二维数组 x2 = new_x[:,0] y2 = new_x[:,1] # 初始化散点图,先传入空数组避免初始显示所有点 scat = ax.scatter([], [], s=10) def animate(i): # 仅取第i个点的坐标,整理成set_offsets要求的(n,2)格式数组 current_point = np.array([[x2[i], y2[i]]]) scat.set_offsets(current_point) return scat, ani = animation.FuncAnimation(fig, animate, repeat=False, frames=len(x2), interval=20, blit=False) plt.show()
关键修改说明
- 初始化
scat时传入空坐标对([], []),避免初始状态显示全部点; animate函数不再使用切片累积点,而是直接取当前索引i对应的单个点,用二维数组格式传入set_offsets;- 保持
frames=len(x2)即可遍历所有点,动画会依次切换显示每个点,每次仅保留当前点。
内容的提问来源于stack exchange,提问作者Hadis
相关产品推荐
相关产品推荐

