You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现仅显示当前点并删除前序点的散点图动画?

实现仅显示当前点的散点图动画

你的现有代码会累积显示从第一个到第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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:42:08