使用 Mayavi 制作 3D 图表,并使用 Matplotlib 风格的轴

2024-03-06

我一直在用 Mayavi 进行 3D 绘图,我可以绘制我想要的散点图,但似乎无法让轴看起来正确。我发现了以下内容上一个问题 https://stackoverflow.com/questions/4739360/any-easy-way-to-plot-a-3d-scatter-in-python-that-i-can-rotate-around/4739704这开始明白我所追求的,但没有详细说明。我想要一个 3D 散点图,例如#1 https://i.stack.imgur.com/HkWkm.jpg但有漂亮的轴,比如#2 https://i.stack.imgur.com/McrY1.jpg(我会嵌入,但我没有足够的声誉)。 普通的 Mayavi 斧头无法切割它。对于获取 Matplotlib 拥有的飞机有什么建议吗?


一旦我们掌握了“窍门”,这实际上是非常简单的,而且我已经做过很多次了。

“技巧”是首先生成 mayavi 图,然后将其传输到 matplotlib 窗口中,您可以在其中使用所有熟悉的 matplotlib 工具来制作带有数字、日期、箭头或 matplotlib 提供的其他部分的轴。在此代码示例中,我将把 mayavi 'copper spheres' 示例放入 matplotlib 轴集中:

import numpy, pylab, mayavi, mayavi.mlab
import matplotlib.pyplot as plt

t = numpy.linspace(0, 4 * numpy.pi, 20)
cos,sin = numpy.cos, numpy.sin

x = sin(2 * t)
y = cos(t)
z = cos(2 * t)
s = 2 + sin(t)
mayavi.mlab.points3d(x, y, z, s, colormap="copper", scale_factor=.25)

arr = mayavi.mlab.screenshot()
fig = plt.figure(figsize=(5, 5))
pylab.imshow(arr)

plt.show()

The result is just the mayavi plot in a matplotlib set of axes: Mayavi graphics in matplotlib axes

唯一棘手的部分是,如果您想要生成超过一两个手动构建的绘图,您需要建立有关 mayavi 和 matplotlib 的比例和尺寸的实用知识,以使两者一起缩放。这不是微不足道的,但对于 Mayavi 和 Matplotlib 来说都有相当详细的记录,并且从你都知道的事情的声音来看,所以我不会重复这些要点。 (现在事情已经在 Matplotlib 中了,你可以使它们也成为生成的 PDF 的一部分 https://stackoverflow.com/questions/5356413/draw-images-with-canvas-and-use-simpledoctemplate/28389092#28389092或使用 python-docx 将它们移植到 Microsoft Word 中)

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

使用 Mayavi 制作 3D 图表,并使用 Matplotlib 风格的轴 的相关文章

  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 如何将 GAE 中一种 Kind 中的所有实体复制到另一种 Kind 中,而无需显式调用每个属性

    我们如何使用function clone entity 如中所述在 Python 中复制 Google App Engine 数据存储中的实体 而无需在 编译 时知道属性名称 https stackoverflow com question
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • ORA-04084: 无法更改此触发器类型的新值

    我正在尝试打开 pl sql 触发器 该触发器在故事更改时计算表中某些单元格的总数 这是代码 ALTER session SET nls date format dd mm yyyy CREATE OR REPLACE TRIGGER TO
  • Go 中可以有函数指针吗?

    我正在学习 Go 中的指针 并设法写出类似的东西 func hello fmt Println Hello World func main pfunc hello pfunc is a pointer to the function hel
  • 2 轴 Reportlab 图

    我通过重叠条形图和线罐 成功在 ReportLab 中创建了一个 2 轴图 对于对类似内容感兴趣的任何人来说 这里是代码 from reportlab graphics shapes import Drawing colors from r
  • 让 htmlParse 与希伯来语一起工作?

    我希望 htmlParse 能够很好地处理希伯来语 但它不断地扰乱我输入的页面中的希伯来语文本 例如 why can t I parse the Hebrew correctly library RCurl library XML u ht
  • 如何使用 Codeigniter PHP 将 CSV 导入数据库?

    我正在尝试使用 csv 插入记录 我想将 csv 上传到我的应用程序并希望将其导入数据库 现在我有一个用户表 所以我想通过导入用户的 csv 文件来创建用户 我对文件上传了解一点 但对将其导入数据库一无所知 请帮助 请参阅我已使用以下命令完
  • Jetpack compose - 当应用程序返回前台时如何刷新屏幕

    当应用程序返回前台时 我需要自动刷新 Android Compose 屏幕 我有一个需要权限和位置服务的 如果用户关闭了其中任何一项 则会绘制一个需要更改的项目列表 当用户转到 设置 并且应用程序返回前台时 我希望刷新列表以反映更改 我正在
  • Android WebView 硬件加速 Artefact 解决方法

    Android 中的 WebView 硬件加速存在一个已知的错误 例如 请参见此处 https code google com p android issues detail id 17352 https code google com p
  • 每次 React 向 Express 发送请求时,都会生成一个新的会话

    I use React作为客户端发送请求Express with proxy and express session设置 但每次 React 向 Express 服务器发出请求时 都会创建一个新会话 因此 我通过手动访问相同的 api ur
  • chrome.tabs.update() 重定向到 'chrome-extension://invalid/'

    我编写了一个 chrome 扩展 它根据作为内容脚本注入的计时器的值重定向当前选项卡 后台脚本通过每隔一段时间轮询每个计时器来跟踪所有打开的选项卡的运行时间 如果在特定站点上花费的时间超过给定限制 则将活动选项卡重定向到间隙页面 并提供重置
  • 如何使用SBT和IntelliJ IDEA管理多个相互依赖的模块?

    我正在开发几个相互依赖的模块 并且希望在一个 IDEA 项目中将它们一起使用 我在用着sbt idea https github com mpeltonen sbt idea从 sbt 构建定义生成 IDEA 项目 这对于单个项目非常有用
  • 如何阻止 Reporting Services 报表在启动时自动呈现?

    我注意到 如果报表的所有参数都指定了默认值 那么它会在启动时自动呈现 我怎样才能防止这种情况发生 也就是说 我不希望在用户单击 查看报告 按钮之前呈现报告 如果所有参数都有默认值 则无法停止报表呈现 自动停止报表呈现的唯一方法是至少有一个没
  • Mac 命令行 - 列出可用的串行端口?

    在我的 Mac 上 我目前有可用的串行端口 dev tty usbserial A700dYoR dev cu usbserial A700dYoR dev tty 蓝牙 PDA 同步 dev cu 蓝牙 PDA 同步 dev tty 蓝牙
  • Java:在for循环init中初始化多个变量?

    我想要两个不同类型的循环变量 有什么办法可以让这个工作吗 Override public T get int index throws IndexOutOfBoundsException syntax error on first int
  • 放大 AMCharts 时丢失 Timeserie

    当我放大图表时 serie2 消失了 如果我通过从右侧选择光标进行缩放 但是从左侧缩放工作正常 无论如何 我期待看到 2 系列 但似乎有时不是 See my 截屏 https i stack imgur com MXsX1 png 知道为什
  • 在opencv c++中绘制旋转矩形

    我想用c 在opencv中绘制一个旋转的矩形 我用 rectangle 函数如下 rectangle RGBsrc vertices 0 vertices 2 Scalar 0 0 0 CV FILLED 8 0 但是这个函数画了一个0角的
  • 从 C# 安装项目运行另一个程序

    我已经用 C 创建了一个设置和部署项目 现在我有另一个 Windows 更新 exe 我想在安装我的项目之前成功运行和安装它 我已将 exe 与我的项目打包在一起 我之前如何运行该exe 您想要将自定义操作添加到运行可执行文件的安装项目 本
  • 根据等于 x.x.x.x/x 的 IP 字符串计算 IP 范围

    给定 IP 字符串 我如何计算 IP 范围x x x x x最常见的情况可能是198 162 1 1 24但可以是任何东西 任何法律允许的东西 我要拿198 162 1 1 24并将其转换为 198 162 1 1 198 162 1 12
  • 音频 - 快进 30 秒

    我有一个音频播放器 可以播放从 Core Date 检索到的音频 播放和暂停工作正常 我正在尝试实现 向前跳转 30 秒 按钮 并寻求有关如何实现该操作的任何指示 我的 播放 暂停 按钮的代码 IBAction func playPress
  • Python Selenium Webdriver - 动态更改下载目录

    为了在定义 selenium webdriver 之前显式定义下载目录 我们使用以下代码 chromeOptions webdriver ChromeOptions prefs download default directory C da
  • 使用 Mayavi 制作 3D 图表,并使用 Matplotlib 风格的轴

    我一直在用 Mayavi 进行 3D 绘图 我可以绘制我想要的散点图 但似乎无法让轴看起来正确 我发现了以下内容上一个问题 https stackoverflow com questions 4739360 any easy way to