如何在 Matplotlib 的 3D 图中绘制矢量上的箭头?

如何在 matplotlib 的 3d 图中绘制矢量上的箭头?

在 matplotlib 的 3d 图中绘制矢量上的箭头

想要将箭头放置在 3d 图形中绘制的特征向量上。

解决方案

创建自定义箭头补丁类

由于 matplotlib 的 fancyarrowpatch 类仅适用于 2d 图形,因此需要创建一个新的箭头补丁类 arrow3d,该类继承自 fancyarrowpatch。覆盖 posa 和 posb 方法,将 3d 坐标投影到 2d,然后将其分配给 posa 和 posb。

修改绘图代码

在绘图代码中,将箭头艺术家添加到包含特征向量的绘图对象中。使用自定义的 arrow3d 类,为每个特征向量绘制一个箭头,从平均位置延伸到特征向量末端。

最终代码

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib.patches import FancyArrowPatchfrom mpl_toolkits.mplot3d import proj3dclass Arrow3D(FancyArrowPatch):    def __init__(self, xs, ys, zs, *args, **kwargs):        FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)        self._verts3d = xs, ys, zs    def draw(self, renderer):        xs3d, ys3d, zs3d = self._verts3d        xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)        self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))        FancyArrowPatch.draw(self, renderer)# 数据生成和特征向量计算...# 绘图fig = plt.figure(figsize=(15,15))ax = fig.add_subplot(111, projection='3d')...for v in eig_vec:    a = Arrow3D([mean_x, v[0]], [mean_y, v[1]],                [mean_z, v[2]], mutation_scale=20,                lw=3, arrowstyle="-|>", color="r")    ax.add_artist(a)...

登录后复制

输出

将看到带箭头的特征向量绘制在 3d 图中。

以上就是如何在 Matplotlib 的 3D 图中绘制矢量上的箭头?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2182710.html

(0)
上一篇 2025年2月25日 15:26:05
下一篇 2025年2月25日 15:26:20

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用 Python 绘制带有置信区间的图形?

    绘制带有指定置信区间的图形 在 python 中绘制具有多个置信区间的图形时,以下步骤可以简化过程: 导入必备库:导入 matplotlib 库,它提供绘图功能。准备数据:将您的数据分组为包含中心点及其置信区间的元组或列表。创建图形对象:使…

    2025年2月25日
    200
  • 大 O 表示法 – Python

    1. 定义 描述算法执行时间或空间使用上限的数学符号。它表示为 o(f(n)),其中 f(n) 是一个函数,将时间或空间表示为输入 n 大小的函数. 更多信息请访问:http://bigocheatsheet.com 2. 目的 算法比较:…

    2025年2月25日
    200
  • 零售店的需求预测和库存管理 – SARIMA 模型

    零售店每天处理大量库存,使得库存监控和管理变得更加繁琐。传统的零售商店库存管理方法繁琐,监控、跟踪和管理效率低下。这就需要一个强大的数字化库存管理系统,该系统可以无缝执行零售商店库存分析,以减少手头库存,并以更少的体力劳动实现更多库存销售。…

    2025年2月25日
    200
  • 软件工程师访谈 – #EIS CLI

    介绍 这是软件工程师访谈系列的第三篇文章。我带来了几年前做过的挑战,并且实际上得到了这个职位 – 涉及其他技术面试,例如过去的经验筛选。 如果您错过了本系列之前的帖子,可以在这里找到它们。 挑战 这个挑战也是一项带回家的编码任务…

    2025年2月25日
    200
  • 高效的错误处理程序

    分类任务是人工智能中最常见的任务,因为它需要很少的库。我尝试使用在线编译器的资源进行编写,但不了解工作的复杂性。 def rle_decode(mask_rle, shape=(1280, 1918, 1)): ”’ mask_rle: …

    2025年2月25日
    200
  • [CVHSV 与 RGB:理解和利用 HSV 进行图像处理

    在上一篇文章中,我们探索了在 opencv 中处理 rgb 图像的基础知识,包括绘图以及调整亮度和对比度。虽然 rgb 色彩空间非常适合计算机显示器,因为它以屏幕发出的光强度来表示颜色,但它与人类在自然世界中感知颜色的方式并不相符。这就是 …

    2025年2月25日 编程技术
    200
  • PyTorch 中的 MNIST

    请我喝杯咖啡☕ *我的帖子解释了 mnist。 mnist() 可以使用 mnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 tr…

    2025年2月25日
    200
  • PyTorch 中的 EMNIST

    请我喝杯咖啡☕ *我的帖子解释了 emnist。 emnist()可以使用emnist数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 sp…

    2025年2月25日
    200
  • PyTorch 中的 KMNIST

    请我喝杯咖啡☕ *我的帖子解释了 kmnist。 kmnist() 可以使用 kmnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是…

    2025年2月25日
    200
  • 在 PyTorch 中移动 MNIST

    请我喝杯咖啡☕ *我的帖子解释了移动 mnist。 movingmnist() 可以使用 moving mnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径…

    2025年2月25日 编程技术
    200

发表回复

登录后才能评论