Python在3D散点图中用线连接相邻点

2024-03-20

我有两组 (x,y.z) 坐标,我用 Matplotlib 将它们绘制在 3D 散点图中。现在,我想将每个生成的四边形与平面连接起来。 我已经了解了如何在 3D 空间中绘制 2D 多边形在 python-matplotlib 中绘制 3D 多边形 https://stackoverflow.com/questions/4622057/plotting-3d-polygons-in-python-matplotlib.

我不知道该怎么做是将我的集合中的点分为 4 个点组以便绘制多边形。即使我能够用直线将每个点与其邻居连接起来,我也会很高兴。

My set of points lies very close to a planar distribution; but it is just a set of coordinates, there is no constraint underneath it.enter image description here

My code:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def plot_figure(data):
    fig = plt.figure()
    ax = fig.gca(projection='3d')

    ax.scatter(data[:, 0], data[:, 1], data[:, 2],
           c='r', s=20, linewidths=None)

    ax.axis('equal')
    ax.axis('tight')

    plt.show()


data = [[ 1900., 800., 442.82], [ 1900., 900., 463.04], [ 1900.,1000., 
473.06], [ 1900.,1100., 485.07], 
[ 1900.,1200., 498.63], [ 1900.,1300., 513.83], [ 1900.,1400., 536.1 ], [ 
1900.,1500., 551.29],
[ 1900.,1600., 566.5 ], [ 1900.,1700., 581.65], [ 1900.,1800., 603.91], [ 
2000., 800., 453.5 ], 
[ 2000., 900., 473.75], [ 2000.,1000., 487.14], [ 2000.,1100., 499.48], [ 
2000.,1200., 513.39],
[ 2000.,1300., 528.92], [ 2000.,1400., 551.85], [ 2000.,1500., 567.35], [ 
2000.,1600., 582.9 ], 
[ 2000.,1700., 598.4 ], [ 2000.,1800., 621.32], [ 2100., 800., 464.23], [ 
2100., 900., 485.34],
[ 2100.,1000., 502.87], [ 2100.,1100., 515.71], [ 2100.,1200., 530.13], [ 
2100.,1300., 546.14], 
[ 2100.,1400., 570.05], [ 2100.,1500., 586.1 ], [ 2100.,1600., 602.15], [ 
2100.,1700., 618.15], 
[ 2100.,1800., 642.09], [ 2200., 800., 474.94], [ 2200., 900., 498.72], [ 
2200.,1000., 516.91], 
[ 2200.,1100., 530.09], [ 2200.,1200., 544.83], [ 2200.,1300., 561.2 ], [ 
2200.,1400., 585.8 ], 
[ 2200.,1500., 602.17], [ 2200.,1600., 618.55], [ 2200.,1700., 634.89], [ 
2200.,1800., 659.46], 
[ 2300., 800., 487.69], [ 2300., 900., 513.43], [ 2300.,1000., 532.64], [ 
2300.,1100., 546.32], 
[ 2300.,1200., 561.57], [ 2300.,1300., 578.43], [ 2300.,1400., 604.03], [ 
2300.,1500., 620.89], 
[ 2300.,1600., 637.76], [ 2300.,1700., 654.62], [ 2300.,1800., 680.23], [ 
2400., 800., 500.75], 
[ 2400., 900., 526.83], [ 2400.,1000., 546.69], [ 2400.,1100., 560.71], [ 
2400.,1200., 576.3 ], 
[ 2400.,1300., 593.52], [ 2400.,1400., 619.78], [ 2400.,1500., 636.98], [ 
2400.,1600., 654.2 ], 
[ 2400.,1700., 671.38], [ 2400.,1800., 697.66], [ 2500., 800., 516.1 ], [ 
2500., 900., 542.71], 
[ 2500.,1000., 563.6 ], [ 2500.,1100., 578.12], [ 2500.,1200., 594.18], [ 
2500.,1300., 611.89],
[ 2500.,1400., 639.17], [ 2500.,1500., 656.87], [ 2500.,1600., 674.58], [ 
2500.,1700., 692.26],
[ 2500.,1800., 719.53], [ 2600., 800., 530.05], [ 2600., 900., 556.98], [ 
2600.,1000., 578.51],
[ 2600.,1100., 593.37], [ 2600.,1200., 609.77], [ 2600.,1300., 627.81], [ 
2600.,1400., 655.76],
[ 2600.,1500., 673.82], [ 2600.,1600., 691.86], [ 2600.,1700., 709.87], [ 
2600.,1800., 737.83]]
data = np.asarray(data)

plot_figure (data)

您可以使用plot_surface or plot_wireframe阴谋。为了能够使用它,您需要重塑数据以构成网格。在这种情况下,这相当容易,因为数据已经处于有用的顺序。

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

#data = data from the question
data = np.asarray(data)

a,b = len(np.unique(data[:,0])),  len(np.unique(data[:,1]))

X = data[:,0].reshape(a,b).T
Y = data[:,1].reshape(a,b).T
Z = data[:,2].reshape(a,b).T

fig = plt.figure()
ax = fig.gca(projection='3d')

ax.plot_surface(X,Y,Z)

ax.axis('equal')
ax.axis('tight')

plt.show()

or with

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

Python在3D散点图中用线连接相邻点 的相关文章

  • Python Numpy Reshape错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误 数组 x 的形状为 6 10 300 我想将其重塑为 6 3000 我正
  • 在推送到容器注册表之前如何对构建的映像运行测试?

    从 gitlab 文档中可以看出如何使用 kaniko 创建 docker 镜像 build stage build image name gcr io kaniko project executor debug entrypoint sc
  • sy.sympify(str(表达式)) 不等于表达式

    据我了解 str将 SymPy 表达式转换为字符串并sympify将字符串转换为 SymPy 表达式 因此 我希望以下内容成立 对于合理的表达 gt gt gt sy sympify str expr expr True 我尝试过这个 确实
  • Python函数组成

    我尝试使用良好的语法来实现函数组合 这就是我所得到的 from functools import partial class compfunc partial def lshift self y f lambda args kwargs s
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • 如果另一列中的值为空,则删除重复项 - Pandas

    我拥有的 df Name Vehicle Dave Car Mark Bike Steve Car Dave Steve 我想从 名称 列中删除重复项 但前提是 车辆 列中的相应值为空 我知道我可以使用 df dropduplicates
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • R-在多个图的外缘绘制居中图例

    我想在具有多个绘图的设备中的绘图区域之外绘制居中图例 SO 中提出了许多关于更改 R 图中图例位置的问题 略有不同 例如 1 R 组合图的通用标题和图例 https stackoverflow com questions 8736966 r
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • Jupyter笔记本突然变得很慢

    我以前在anaconda环境下运行jupyter运行得很好 显示警告后 IOPub data rate exceeded The notebook server will temporarily stop sending output to
  • 在 pygame 中,我如何创建一个数据结构来跟踪调整大小事件和对象的坐标?

    我希望在调整屏幕大小后使鼠标事件与对象保持同步 有人告诉我需要创建一个数据结构来跟踪 调整事件大小 新坐标以匹配调整大小 如何使用简单的代数方程来完成此操作并将其集成到调整大小事件中以进行准确更新 反过来做 创建一个虚拟游戏地图 在绘制场景
  • 预测测试图像时出现错误 - 无法重塑大小数组

    我正在尝试使用 TensorFlow 和 Keras 在 Python 中进行图像识别 并且我已经关注了下面的博客 https stackabuse com image recognition in python with tensorfl
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 有没有办法拉伸整个显示图像以适应给定的分辨率?

    我最近一直在使用pygame制作游戏 遇到了一个小问题 基本上 我希望能够将屏幕上的整个图像 我已经传输到它的所有内容 拉伸到用户将窗口大小调整到的分辨率 我在 pygame 和堆栈溢出的文档中搜索了很多 但我似乎找不到答案 这可能吗 我的
  • 通过新数据更新绘图,而不是在 Jupyter 笔记本中制作新绘图

    我有一些问题 希望你能帮我解决 我需要使用下拉小部件创建交互式绘图 我可以在其中选择并绘制感兴趣的数据 我通过以下方式做到这一点 import plotly graph objects as go import ipywidgets as
  • 如何使用logging.conf文件使用RotatingFileHandler将所有内容记录到文件中?

    我正在尝试使用RotatingHandler用于 Python 中的日志记录目的 我将备份文件保留为 500 个 这意味着我猜它将创建最多 500 个文件 并且我设置的大小是 2000 字节 不确定建议的大小限制是多少 如果我运行下面的代码
  • 在不同的 GPU 上同时训练多个 keras/tensorflow 模型

    我想在 Jupyter Notebook 中同时在多个 GPU 上训练多个模型 我正在使用 4GPU 的节点上工作 我想将一个 GPU 分配给一个模型并同时训练 4 个不同的模型 现在 我通过 例如 为一台笔记本选择 GPU import
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来

随机推荐

  • PHPUnit 在运行第一个测试之前进行设置,并在运行最后一个测试之后进行拆除

    我正在尝试使用 PHPUnit 为 php 应用程序实现类似 Django 的测试实用程序 类似 Django 我的意思是在运行第一个测试之前从主数据库创建一个单独的测试数据库 并在运行最后一个测试后将其删除 即使一次运行许多测试用例 测试
  • 用dense_rank数填充多维数组的rank列

    我的数组结构如下 points gt 10 details gt name gt Team A rank gt points gt 10 details gt name gt Team B rank gt points gt 8 detai
  • c++ 可以通过引用传递临时 lambda(适用于 msvc/windows,但不适用于 gcc/linux)?

    假设我有以下代码片段 global variable std thread worker thread Template function template
  • ui 中的输入绑定:jsf 中的重复

    我正在使用facelets jsf 2 0和primefaces 3 0 M2组件库 我正在尝试实现动态行数 包括发生数据表选择时填充的输入字段 每当进行选择时 动态行都会使用输入字段正确生成 但在后续选择的第一个选择之后 动态行计数会正确
  • 如何将本地MYSQL数据库移动到远程数据库服务器

    我有一个在 WAMP 下运行的本地 MYSQL 数据库 我需要将其移至生产数据库服务器 MySQL 新手 需要了解提升此数据库的最佳方法 您可以在当前服务器上运行它 mysqldump u user p database name gt d
  • R:如何将我的数据格式化为多项式 Logit?

    我正在 R 上复制一些 Stata 代码 我想使用以下命令执行多项式逻辑回归 mlogit函数 来自同名包 我知道有一个multinom函数于nnet但我不想用这个 我的问题是 使用mlogit 我需要使用以下方式格式化我的数据mlogit
  • 如何在 iOS 应用程序中获取某个位置的时区? [复制]

    这个问题在这里已经有答案了 我是 iOS 开发新手 我正在尝试构建一个主要可以做两件事的应用程序 a 获取用户的系统时间 比如说 他的手机在伦敦 所以他的时间 b 获取给定地点的时间 例如 旧金山 然后 我想计算两个地点之间的时间差 例如
  • PHP 中基于开关的 URL 路由

    我目前正在做的是这样的 我有一个 path变量 即后面的所有内容索引 php 我用 htaccess 隐藏 直到问号以忽略查询字符串 然后我用一个switch with preg match该变量的情况下确定它应该调用什么脚本 例如 swi
  • 如何去除 CMake 变量中的尾随空格?

    我们正在尝试改进 CMake 生成的 makefile 对于 Clang GCC 和 ICC 我们要添加 march native 这样做的块看起来像 march native for GCC Clang and ICC on i386 i
  • Slick Grid 中的数据更新

    我有一个 slickgrid 大约有 100 行 它的数据在 5 秒内刷新 但每次更新时滚动都会重置 这令人不安 我尝试使用 dataview 和 dataview refresh 但这次没有任何变化反映到网格 这是我在每次刷新时尝试的内容
  • 使用 pandas 加载大 CSV 文件

    我正在尝试使用 pandas 加载 csv 文件 大约 250 MB 作为数据框 在我的第一次尝试中 我使用了典型的 read csv 命令 但收到错误内存 我已经尝试过中提到的方法pandas 中的大型持久 DataFrame https
  • Laravel 模型:模型属性在哪里?

    我来自 Visual Studio Entity Framework 背景 并尝试在 Laravel Eloquent 中找到等效功能 在 EF 和 Visual Studio 中 我们向应用程序添加一个新模型 并只告诉它我们现有的数据库
  • 如何更改使用 Flutter 构建的应用程序显示名称?

    我已经使用 Flutter create testapp 创建了该应用程序 现在 我想将应用程序名称从 testapp 更改为 My Trips Tracker 我怎样才能做到这一点 我尝试过从AndroidManifest xml 并且它
  • 基于Enum的Jackson多态反序列化

    我正在与Jackson 多态反序列化 https github com FasterXML jackson docs wiki JacksonPolymorphicDeserialization 这是我的代码 它反序列化为基于 type 属
  • 使用 JavaScript/onorientationchange 重置 iPhone 上 Safari 的比例/宽度/缩放

    我根据用户使用 body 标签中的 onorientationchange 调用握持手机的方式显示不同的内容 这非常有效 我隐藏一个 div 同时使另一个 div 可见 纵向模式下的 div 在首次加载时看起来很棒 我用它来获得正确的比例
  • 如何从文本中删除除文字和表情符号之外的所有内容?

    作为文本分类问题的一部分 我正在尝试清理文本数据集 到目前为止 我删除了除文本之外的所有内容 标点符号 数字 表情符号 一切都被删除了 现在我尝试使用表情符号作为特征 因此我想保留单词和表情符号 首先 我在文本中搜索表情符号 并将它们与其他
  • API Key 和 JWT Token 可以在同一个 .Net 6 WebAPI 中使用吗

    我正在构建一个新的 Net 6 WebAPI 它将被许多应用程序使用 因此我需要实现 API 密钥来限制仅对这些应用程序的访问 只有极少数个人用户需要授权 管理员 因此我想与 JWT 结合用于管理端点 我们不希望要求用户在不必要的情况下 非
  • mysql批量插入文本文件

    我有纯文本文件 我想将该文本文件的内容逐行移动到 mysql 表中 任何人都可以帮助我 因为它不是 csv 文件 我怎样才能实现这一目标 我设计我的数据库如下 RowID int 11 NO PRI auto increment Text
  • 如何获取 Symfony2 中控制器的所有路由列表?

    我有一个控制器 它实现了所有路线 URL 我的想法是为所有帮助页面提供通用索引 有没有办法获取控制器 从控制器内 定义的所有路由Symfony2 您可以做的是将 cmd 与 最高 SF2 6 一起使用 php app console rou
  • Python在3D散点图中用线连接相邻点

    我有两组 x y z 坐标 我用 Matplotlib 将它们绘制在 3D 散点图中 现在 我想将每个生成的四边形与平面连接起来 我已经了解了如何在 3D 空间中绘制 2D 多边形在 python matplotlib 中绘制 3D 多边形