Matplotlib动画,移动方块

2023-12-29

我正在从文本文件加载 x,y 坐标和偏航角。这些坐标是正方形中间的坐标,yaw 是正方形与 x 轴的角度。在我的文本文件中,坐标正在变化。我想制作一个动画,其中方块将移动(遵循文件中的坐标)并具有精确的偏航角。一个动画刻度应该代表一个方块移动。我尝试了这段代码,它非常糟糕并且无法工作。有任何想法吗?谢谢。现在,我使用左下角而不是正方形的中间。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
from matplotlib import animation

file_name = "Crobot_test_log.txt"
x = np.loadtxt(file_name, usecols=(0,))
y = np.loadtxt(file_name, usecols=(1,))
yaw = np.loadtxt(file_name, usecols=(2,))
#x = [0,1,2]
#y = [0,1,2]
#yaw = [0.0,0.5,1.3]
fig = plt.figure()
plt.axis('equal')
plt.grid()
ax = fig.add_subplot(111)
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
patch = patches.Rectangle((x[0],y[0]),1.2,1.0,fc ='y',angle = -np.rad2deg(yaw[0]))

def init():
    ax.add_patch(patch)
    return patch,
def animate(i):
    patch = patches.Rectangle((x[i],y[i]),1.2,1.0,fc ='y',angle = -np.rad2deg(yaw[i]))
    return patch,
anim = animation.FuncAnimation(fig, animate,
                               init_func=init,
                               frames=360,
                               interval=1,
                               blit=True)
plt.show()

而不是创建一个新的矩形animate, use set_*修改现有的方法patch:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib import animation

x = [0, 1, 2]
y = [0, 1, 2]
yaw = [0.0, 0.5, 1.3]
fig = plt.figure()
plt.axis('equal')
plt.grid()
ax = fig.add_subplot(111)
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)

patch = patches.Rectangle((0, 0), 0, 0, fc='y')

def init():
    ax.add_patch(patch)
    return patch,

def animate(i):
    patch.set_width(1.2)
    patch.set_height(1.0)
    patch.set_xy([x[i], y[i]])
    patch._angle = -np.rad2deg(yaw[i])
    return patch,

anim = animation.FuncAnimation(fig, animate,
                               init_func=init,
                               frames=len(x),
                               interval=500,
                               blit=True)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib动画,移动方块 的相关文章

随机推荐

  • 在谷歌电子表格中将单元格格式设置为分钟:秒

    我希望记录我完成某个编程问题所需的时间数据 我正在使用谷歌电子表格来保持我的表现 面临的问题是 我希望细胞接受结果mm ss 但谷歌表正在将其转换为12 hr格式即hh mm ss 我怎样才能阻止这种情况发生 例如 1 30被转换为凌晨 1
  • GO存储数据返回EOF

    我是 golang 新手 我正在尝试构建 Rest api 到目前为止 GET 端点对我来说工作得很好 但是我在使用 POST 方法 创建用户 时遇到了困难 这就是我的 User 结构的样子 type User struct ID uint
  • 处理失败的期货

    在 Play Framework 2 3 中 操作可以从成功的未来调用中产生结果 如下所示 def index Action async val futureInt scala concurrent Future intensiveComp
  • XPath 如何以名称空间不知道的方式识别谓词中的属性[重复]

    这个问题在这里已经有答案了 我有以下 XML 文件
  • 为数据库中的日期添加 30 天

    我在数据库中发布了更新日期和发布日期 目前它们的日期相同 我如何更改它 在 mysql 插入期间 以便发布日期比发布更新日期晚 30 天 我正在使用 pubDate Thanks 您可以使用日期添加 http dev mysql com d
  • PM2 Flush 不清除日志

    我运行的 Ubuntu 服务器突然满了 因为 pm2 日志占用了 16GB 我试过pm2 flush 但这只会清除占用 4GB 的文件夹 作为 root pm2 文件夹被清除 但日志文件夹未被清除 作为我自己的用户 该文件夹已被清除 但用户
  • 在Python中如何将`email.message.Message`对象转换为`email.message.EmailMessage`对象

    据我了解mboxPython 3 6 标准库中的类生成以下类型的旧式消息对象email message Message 较新的班级email message EmailMessage3 4 3 6 中引入的功能可以更轻松地访问消息内容 通过
  • 禁用 nginx 中的请求缓冲

    看起来 nginx 在将请求传递到上游服务器之前会缓冲请求 虽然对我来说大多数情况下都可以 但这是非常糟糕的 我的情况是这样的 我有 nginx 作为前端服务器来代理 3 个不同的服务器 apache 与典型的 php 应用程序 我用 py
  • lambda函数使用其参数作为模板参数调用模板函数

    以下是示例代码 无法编译 We use 迭代函数来迭代某个范围并运行 lambda 回调函数 这iterate函数将传递一些指示 即type 到回调 lambda 函数 然后该函数将根据指示进行工作 由于这些指示在编译时是固定的 我相信有一
  • Collection.stream() 的实现

    我已经在 J DK 1 8 上工作了几天 我遇到了一些与此类似的代码 List
  • 使用 ul li 生成 Jquery 多级菜单列表

    images vertical horizontal Jquery UI include quickfox 要处理的数组 我有像上面一样的文件夹结构 它存储在数组目录中 见下文 var dirs images images vertical
  • 如何在Vuejs中处理浏览器后退按钮单击事件

    在 Vue 组件中 我想像这样处理浏览器返回事件 mounted if browser back console log browser back button clicked else console log stay here 为了处理
  • 从 JSON 文件定义 Mongoose 模式

    我想从 JSON 文件定义我的猫鼬架构 这是我的 JSON 文件结构 default item productTitle label Product Title note e g Samsung GALAXY Note 4 type tex
  • Angular.js 观察函数调用的结果

    以下代码片段是否存在任何表面问题 ul class breadcrumb li class active span nbsp a href path dir url dir name a nbsp span class dividier s
  • 如何在 pythonpyder IDE 中使用相对导入

    我有 anaconda python 并正在使用spyder IDE 我试图弄清楚如何在运行底部或 F5 中使用相对导入 假设我有 pkg A foo1 py pkg A foo2 py 并且 foo1 py 有 from import f
  • 如何修复手机上的 Skrollr?

    我遵循移动浏览器支持指南 将内容包装在正文标记之后和之前 解释在这里 https github com Prinzhorn skrollr what you need in order to support mobile browsers
  • PHP Curl 和 setcookie 问题

    我有一个curl 脚本 充当客户端和主服务器之间的代理 field array array Accept gt HTTP ACCEPT Accept Charset gt HTTP ACCEPT CHARSET Accept Encodin
  • 在 Magento ORM 中使用布尔字段

    我正在为我的自定义实体开发后端编辑页面 我几乎一切都正常工作 包括保存一堆不同的文本字段 但是 当尝试设置布尔字段的值时 我遇到了问题 我努力了 landingPage gt setEnabled 1 landingPage gt setE
  • 在域模型之间映射数据的模式

    这是我最近需要做的一件常见的事情 我正在寻找任何常见的模式来使这变得更容易一些 这一切的主要要点是我有一些数据模型 它们被建模来满足 ORM 并纯粹对对象进行 CRUD 操作 这些模型目前通过存储库 工厂公开 取决于其 C 还是 RUD 然
  • Matplotlib动画,移动方块

    我正在从文本文件加载 x y 坐标和偏航角 这些坐标是正方形中间的坐标 yaw 是正方形与 x 轴的角度 在我的文本文件中 坐标正在变化 我想制作一个动画 其中方块将移动 遵循文件中的坐标 并具有精确的偏航角 一个动画刻度应该代表一个方块移