使用 Matplotlib 在绘图上叠加旋转图像

2024-01-03

我目前已经使用矩形补丁构建了一个绘图来显示位置序列。

编辑:用于生成此代码的代码(基于 RLPy 库构建)-

def visualize_trajectory(self, trajectory=[[0,0,0,0], [0.1,0.1,0,0]]):
    domain_fig = plt.figure()

    for i, s in enumerate(trajectory):
        x, y, speed, heading = s[:4]
        car_xmin = x - self.REAR_WHEEL_RELATIVE_LOC
        car_ymin = y - self.CAR_WIDTH / 2.

        car_fig = matplotlib.patches.Rectangle(
            [car_xmin,
             car_ymin],
            self.CAR_LENGTH,
            self.CAR_WIDTH,
            alpha=(0.8 * i) / len(trajectory) )
        rotation = Affine2D().rotate_deg_around(
            x, y, heading * 180 / np.pi) + plt.gca().transData
        car_fig.set_transform(rotation)
        plt.gca().add_patch(car_fig)

有没有办法用图像覆盖每个补丁?理想情况下,每个位置都有一个汽车图像而不是一个矩形。

我玩过 AnnotationBbox 并变形Bbox https://stackoverflow.com/questions/29241550/manipulating-and-animating-an-image-on-a-matplotlib-plot,但在处理旋转时两者似乎都不灵活。


看一眼演示仿射图像 http://matplotlib.org/examples/api/demo_affine_image.html来自matplotlib 画廊 http://matplotlib.org/gallery.html。它显示了如何 旋转图像。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
import matplotlib.cbook as cbook

def get_image():
    fn = cbook.get_sample_data("necked_tensile_specimen.png")
    arr = plt.imread(fn)
    # make background transparent
    # you won't have to do this if your car image already has a transparent background
    mask = (arr == (1,1,1,1)).all(axis=-1)
    arr[mask] = 0
    return arr

def imshow_affine(ax, z, *args, **kwargs):
    im = ax.imshow(z, *args, **kwargs)
    x1, x2, y1, y2 = im.get_extent()
    im._image_skew_coordinate = (x2, y1)
    return im

N = 7
x = np.linspace(0, 1, N)
y = x**1.1
heading = np.linspace(10, 90, N)
trajectory = list(zip(x, y, heading))
width, height = 0.3, 0.3
car = get_image()
fig, ax = plt.subplots()
for i, t in enumerate(trajectory, start=1):
    xi, yi, deg = t
    im = imshow_affine(ax, car, interpolation='none',
                       extent=[0, width, 0, height], clip_on=True,
                       alpha=0.8*i/len(trajectory))
    center_x, center_y = width//2, height//2
    im_trans = (mtransforms.Affine2D()
                .rotate_deg_around(center_x, center_y, deg)
                .translate(xi, yi)
                + ax.transData)
    im.set_transform(im_trans)

ax.set_xlim(-0.5, 1.5)
ax.set_ylim(-0.5, 1.7)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Matplotlib 在绘图上叠加旋转图像 的相关文章

随机推荐

  • 链表与向量

    在过去的几天里 我一直在为软件开发工作的第一次电话面试做准备 在研究我提出的问题时本文 http www codinghorror com blog 2008 01 getting the interview phone screen ri
  • getsockopt 返回与 setsockopt 中设置的不同的 IP_TOS 值

    我正在尝试使用setsockopt to set IPTOS价值IPTOS THROUGHPUT The setsockopt回电0 但是 那getsockopt显示了IP TOS值设置为1 这不同于IPTOS THROUGHPUT 0x8
  • 崩溃。项目开发处于非活动状态

    当我尝试上传新风味版本时 出现错误 警告 Crashlytics 上传发行版时出现问题 项目开发处于非活动状态 我该如何修复它并添加新的flavor用于测试 来自 Stackoverflow 上另一位用户的回复 https stackove
  • Angular js 中的 Twitter 引导日期选择器

    我正在使用 twitter bootstrap Angular js 和 Taffy DB 构建一个应用程序 javascript function datepicker datepicker scope submit function c
  • 在 Delphi 中调整 png 图像大小 - 不正确的 alpha 通道

    我正在调整可能有 Alpha 通道的 png 图像的大小 一切正常 但有一个例外 我在透明区域周围得到一些灰色像素 原始图像没有任何阴影 有没有办法解决这个问题 解决它 我正在使用 Gustavo Daud 的 SmoothResize 请
  • Dart 更新渠道有哪些?

    On the Dart 编辑器页面 https www dartlang org tools editor 我们可以在 2 个频道之间进行选择 dev and stable 它们之间有什么区别 Rico Wind的这篇文章 https gr
  • 下划线变量后跟范围在 bash 中意味着什么:$_{0..10}

    根据tldp org http tldp org LDP Bash Beginners Guide html sect 03 02 html bash下划线变量是 下划线变量在 shell 启动时设置 包含参数列表中传递的正在执行的 she
  • foreach() 和 if() 中单独的开始标记和结束标记

    我在执行单独的开始和结束标记时遇到一些问题 出现解析错误 我在 mvc1 2 中这样做 但是在 mvc4 中如何完成此操作 我正在做一个foreach 根据计数我打开了一个div并关闭一个div 这是代码 foreach var d in
  • 如何在C#中的OpenFileDialog中限制文件名修改

    我有一个 C NET 3 5 程序 它使用OpenFileDialog检索要导入的文件 它有两个过滤器 Domain and 和 Domain 被选为FilterIndex 我看到文件在过滤器中修改后消失的情况OpenFileDialog
  • 使用 Opencv 和 python 获取 RTSP 流

    我知道这可能是此类问题的第 100 个 但我翻遍了谷歌和所有内容 但找不到任何有用的东西 我需要得到一个RTSP流式传输opencv在 python 中 我没有主意了 到目前为止 这是我尝试过的 尝试使用流式传输ffserver and f
  • 无法在 Windows 2012 上运行 Sonatype Nexus Repository Manager 3.0

    我无法启动 Sonatype Nexus Repository Manager 3 0 0 Milestone 7 Release nexus 3 0 0 b2016011501 解压 Windows 存档后 然后 nexus exe 运行
  • 错误没有合适的默认构造函数可用

    我正在实现一个带有节点和迭代器的列表类 它创建一个类型为 Ticket 的列表 这是我在类中定义的一个对象 但是当我尝试编译时 它说 List 没有默认构造函数 因为显然有是 有人看到这里的问题吗 这是类的定义 class List pub
  • 删除CSS中的水平滚动条

    我在我的网页上使用类似 facebook 的按钮 我需要它在页面的右侧对齐 但有一个水平滚动条显示 请看小提琴http jsfiddle net u4kMs http jsfiddle net u4kMs 我无法找出是什么原因造成的 如何解
  • android - android studio 模拟器中的 SSL 问题,在手机上运行良好

    我有一个通过 https 调用 Web 服务的应用程序 当我在手机上运行该 apk 时 效果很好 然而 在模拟器中 所有POST请求超过SSL失败 读取错误 ssl 0xb402be00 SSL 库失败 通常是协议 错误 错误 100c50
  • 无法在 Eclipse 中使用 Acceleo 从 UML 生成 java

    我是 Eclipse 和 Acceleo 的新手 我一直在尝试完成第一个生成器模型教程 我正在使用 Kepler 4 3 和 Acceleo 3 X 我正在关注从 uml 生成 java 代码的教程 链接是http wiki eclipse
  • 如何从 Android 应用程序内的 Web 视图禁用复制、粘贴和选择工具栏

    如何从 Android 应用程序内的 Web 视图中禁用复制 粘贴和选择工具栏 我正在制作一个应用程序 它实际上是 webview 一个在 Javascript 和 Jquery 上工作的网站 所以我想知道是否可以禁用复制粘贴工具栏 禁用
  • 在 NavigatorIOS 中调用 onRightButtonPress 的函数 - React Native

    我在反应本机 NavigatorIOS 中使用 onRightButton 我希望能够调用驻留在我正在推送的组件中的函数 但我不知道如何实现这一点 这是代码示例 this props navigator push component Sin
  • 如何使用 scala 比较 Spark 中的一行与所有其他行

    我的一列中有超过 100K 个名字 我需要比较它们中的每一个 以确定它们是否相同 D souza D souza 或几乎相同 D souza Dsouza 我尝试将 cassandra 表读入 RDD 并对其自身进行笛卡尔乘积以形成元组 但
  • 生成带有阿拉伯字体的 PDF

    我想在React中下载带有阿拉伯字体的pdf文件 但没有找到任何解决方案 我目前正在使用 jsPdf 但它无法正确渲染阿拉伯字体 let doc new PDFDocument let doc new pdf doc setFontSize
  • 使用 Matplotlib 在绘图上叠加旋转图像

    我目前已经使用矩形补丁构建了一个绘图来显示位置序列 编辑 用于生成此代码的代码 基于 RLPy 库构建 def visualize trajectory self trajectory 0 0 0 0 0 1 0 1 0 0 domain