如何使用 mplot3D 或类似工具显示 3D 阵列等值面的 3D 图

2023-11-23

我有一个 3 维 numpy 数组。我想(在 matplotlib 中)显示该数组的等值面的漂亮 3D 图(或更严格地说,显示通过在样本点之间插值定义的 3D 标量场的等值面)。

matplotlib 的 mplot3D 部分提供了很好的 3D 绘图支持,但是(据我所知)它的 API 没有任何东西可以简单地获取标量值的 3D 数组并显示等值面。但是,它确实支持显示多边形的集合,因此我想我可以实现行进立方体算法来生成此类多边形。

看起来很可能已经在某个地方实现了对 scipy 友好的行进立方体,但我还没有找到它,或者我缺少一些简单的方法来做到这一点。或者,我欢迎任何指向其他工具的指针,用于可视化可从 Python/numpy/scipy 世界轻松使用的 3D 数组数据。


只是为了详细说明我上面的评论,matplotlib 的 3D 绘图实际上并不适用于像等值面这样复杂的东西。它旨在为非常简单的 3D 绘图生成精美的、达到出版质量的矢量输出。它无法处理复杂的 3D 多边形,因此即使自己实现行进立方体来创建等值面,也无法正确渲染它。

但是,您可以做的是使用mayavi (it's mlab API比直接使用mayavi方便一点),它使用VTK处理和可视化多维数据。

作为一个简单的示例(根据 Mayavi 画廊示例之一修改):

import numpy as np
from enthought.mayavi import mlab

x, y, z = np.ogrid[-10:10:20j, -10:10:20j, -10:10:20j]
s = np.sin(x*y*z)/(x*y*z)

src = mlab.pipeline.scalar_field(s)
mlab.pipeline.iso_surface(src, contours=[s.min()+0.1*s.ptp(), ], opacity=0.3)
mlab.pipeline.iso_surface(src, contours=[s.max()-0.1*s.ptp(), ],)

mlab.show()

enter image description here

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

如何使用 mplot3D 或类似工具显示 3D 阵列等值面的 3D 图 的相关文章

随机推荐

  • matplotlib:使图例键成为方形

    我正在使用 matplotlib 并且希望在制作条形图时将图例中的键更改为正方形而不是矩形 有没有办法指定这一点 我现在拥有的 我想要的是 Thanks 如果您想要一个非常快速和肮脏的解决方案来获得近似平方 可能需要根据您的绘图进行一些微调
  • 如何在Java中执行无符号到有符号的转换?

    假设我从输入设备读取了这些字节 6F D4 06 40 该数字是毫弧秒格式的经度读数 最高位 0x80000000 基本上始终为零 并且在本问题中被忽略 我可以轻松地将字节转换为unsigned整数 1876166208 但是如何将该无符号
  • 作为好友的模板参数

    在 C 03 中 以下内容是非法的 尽管某些编译器支持它 template
  • 如何判断给定的URL链接是视频还是图片?

    我正在尝试获取用户输入的给定 URL 并确定该 URL 是否指向图像或视频 示例用例 当用户粘贴 YouTube 视频的 URL 时 保存时页面将自动显示嵌入式 YouTube 播放器 当用户在 Flickr 中发布图片的 URL 时 在保
  • 从服务器获取数据后如何将数据存储在房间数据库中

    我在我的 android 应用程序中使用 Retrofit2 和 Rxjava2 作为网络库 使用 NodeJS 和 MongoDB 作为后端服务 我想从服务器获取数据并将数据存储在房间数据库中 以便用户再次打开应用程序时它会从房间获取数据
  • 模型视图投影矩阵的用途

    我们使用模型视图投影矩阵的目的是什么 为什么着色器需要模型视图投影矩阵 模型 视图和投影矩阵是三个独立的矩阵 模型从对象的局部坐标空间映射到世界空间 从世界空间到相机空间的视图 从相机到屏幕的投影 如果您组合了所有三个 则可以使用一个结果从
  • wait((int *)0) 的含义

    一个使用这样的等待函数的程序是 include
  • android Zoom-to-Fit All Markers on Google Map v2 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何放大 缩小地图视图以覆盖所有标记 我正在审查 sdk 中给出的 gmap V2 示例
  • 如何配置分页codeigniter?

    我尝试使用CodeIgniter进行分页 根据Codeigniter的手册 它应该很简单 即使在示例中是这样的 第一个 最后一个 config total rows this gt searchdesc model gt queryallr
  • 调用SKPaymentQueue RestoreCompletedTransactions,无响应

    这里的用例是用户从未购买过我的应用内购买 但点击了 恢复 按钮 我想让用户知道恢复失败 因为没有什么可恢复的 问题是我没有收到任何事件 所以我不知道发生了什么 当我的用户点击界面中的 恢复 按钮时 我调用 SKPaymentQueue de
  • 使用 json 填充下拉列表

    我有包含 id 和 name 列的 SQLite 表 我从 autocomplete php 页面返回这些行的数组 例如 json 如何使用 jquery 和 JavaScript 使用此 json 填充选项 下拉列表 我是 JavaScr
  • 如何解决构建过程中 Android 库自定义属性和包名称重新映射?

    随着时间的推移 我们的 Android 项目已经扩展了很多 现在我们正在从同一源代码树创建多个品牌 APK 由于 Android 的包命名要求 这变得具有挑战性 我们将所有共享代码都放在 Android 库项目中 该项目包含在主应用程序项目
  • 替换 numpy 中的子数组

    给定一个数组 gt gt gt n 2 gt gt gt a numpy array 1 1 1 1 2 3 1 3 4 n gt gt gt a array 1 1 1 1 2 3 1 3 4 1 1 1 1 2 3 1 3 4 我知道可
  • 将 System.Net.mail.MailMessage 保存为 .msg 文件

    我正在构建一个应用程序 我有义务创建一个 MailMessage System Net mail MailMessage 并将其保存在磁盘上作为 msg 扩展名而不是 eml 以下是我用来将 MailMessage 保存为 msg 文件的方
  • Paypal Sandbox 付款状态待定

    我正在使用 Java Rest API 直接从沙箱中的信用卡执行付款 根据文档 所有付款均处于 待处理 状态 https developer paypal com webapps developer docs api create a pa
  • 递归转换目录和子目录中所有文件的所有EOL(dos->unix),无需dos2unix

    如何递归地转换目录和子目录中所有文件的所有 EOL dos gt unix without dos2unix 我没有 无法安装 有没有办法使用tr d r 和管道 如果是这样 怎么办 对于当前目录中的所有文件 您可以使用 Perl 一行代码
  • 如何修复“警告预期“此”将由类方法使用”eslint 错误?

    我正在 React 组件中创建这样的 PDF 导出类 Test 扩展 React PureComponent savePDF const source document getElementById printContainer eslin
  • 这是使用 redux 删除项目的正确方法吗?

    我知道我不应该改变输入 而应该克隆对象来改变它 我遵循 redux 启动项目中使用的约定 该项目使用 ADD ITEM state action gt state items state items action payload value
  • dlopen 对于同一文件的两次调用会产生相同的句柄吗?

    如果我在同一个应用程序运行中对同一个库 文件使用 dlopen 两次 在这两种情况下它会产生相同的句柄吗 对此有任何保证吗 一个简短的实验表明它至少在我的盒子上如此 我目前正在玩一个小插件系统 出于好奇 如果对这种观察到的行为有某种保证 我
  • 如何使用 mplot3D 或类似工具显示 3D 阵列等值面的 3D 图

    我有一个 3 维 numpy 数组 我想 在 matplotlib 中 显示该数组的等值面的漂亮 3D 图 或更严格地说 显示通过在样本点之间插值定义的 3D 标量场的等值面 matplotlib 的 mplot3D 部分提供了很好的 3D