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

如何实现Matplotlib中圆形从A点到B点的直线动画

实现蓝色圆形沿直线的动画移动

需求说明:

需实现蓝色圆形沿直线的动画移动,要求保留现有直线绘制代码,仅补充对象动画实现代码;圆形的形状与颜色不限,只需完成从A点到B点的直线移动。

以下是补充动画代码后的完整实现:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import patches
from matplotlib.animation import FuncAnimation  # 新增:导入动画模块

img = np.ones((200, 200, 3))

# 初始化圆形:设置起点位置(150,100),蓝色填充+合适半径
c = plt.Circle((150, 100), radius=5, color='blue')

def DrawLine(x1, y1, x2, y2):
    dx = abs(x2 - x1)
    dy = abs(y2 - y1) 

    if x1 < x2:
        xs = 1 
    else:
        xs = -1   
        
    if y1 < y2:
        ys = 1
    else:
        ys = -1
     
    x = x1
    y = y1  

    p = 2 * dy - dx   

    if dx > dy:
        while x != x2:
            x = x + xs
            if p > 0:
                y = y + ys
                p = p + 2 * dy - 2 * dx
            else:
                p = p + 2 * dy
            img[y, x] = 0
        
DrawLine(150, 100, 50, 100)

fig = plt.figure()
plt.imshow(img)
ax = plt.gca()
ax.add_artist(c)

# 定义动画更新函数:逐帧调整圆形位置
def update(frame):
    # 从起点(150,100)移动到终点(50,100),100帧完成移动
    new_x = 150 - frame
    c.center = (new_x, 100)
    return c,

# 创建并启动动画
ani = FuncAnimation(fig, update, frames=100, interval=20, blit=True)

plt.show()

关键补充说明:

  • 新增导入FuncAnimation模块,这是Matplotlib实现帧动画的核心工具
  • 调整圆形初始化参数:设置蓝色填充、合适半径,并将起点对齐直线的A点(150,100)
  • update函数负责每一帧更新圆形坐标:通过frame参数逐步递减x值,保持y坐标不变,匹配水平直线轨迹
  • FuncAnimation配置:100帧完成移动,每帧间隔20ms,启用blit=True提升动画流畅度

内容的提问来源于stack exchange,提问作者Bud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:45:34