问题标签 [mayavi.mlab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
848 浏览

python - Mayavi:曲面图和 3D 轮廓

大家晚上好,我是 Matplotlib 的长期用户,我最近发现了 Mayavi。

使用 Matplotlib,我可以绘制一个 3D 表面,并为每个轴绘制表面图的投影轮廓,我想知道 Mayavi 是否可以这样做。

这是迄今为止我使用 Matplotlib ( source ) 所做的一个示例,但我无法在 Internet 上找到使用 Mayavi 绘制轮廓的类似方法:

在此处输入图像描述

知道 Mayavi 的人可以告诉我是否可以像使用 Matplotlib 一样为每个轴绘制 3D 轮廓?


Matplotlib 代码

玛雅维代码

0 投票
0 回答
447 浏览

python - 无法导入 mayavi:“ImportError:无法导入名称工具”

我正在尝试在 Python 2.7 中使用 Mayavi,但无法导入它。我的操作系统是 Ubuntu (LTS)。这是代码:

产生以下错误:

我曾尝试强制重新安装包 mayavi、工具、特征,但无济于事。我用 pip 和 apt 都试过了。

编辑:我认为错误是 mayavi 无法访问我的 Python 2.7 安装的 VTK。当我尝试 pip force-reinstall mayavi 时,我收到错误“找不到任何满足 vtk(来自 mayavi)要求的下载”。此处描述了该错误。我不知道该怎么做,因为 vtk 和 vtkpython 都已正确安装(使用 apt)并且可以正常工作 - 问题在于 mayavi 和 pip 不知道该怎么做?

0 投票
1 回答
276 浏览

python - 在 Python 脚本中设置 mayaVI 管道属性

我正在使用 mayavi.mlab.surf 和 mayavi.mlab.quiver3D 功能在 3D 中绘制曲面和矢量场。与 Mayavi 管道相比,这些函数没有很多关键字参数可以让我修改表面和箭袋的外观,在 Mayavi 管道中,我可以将内容编辑到最微小的细节(例如箭袋箭头半径 - 参见下面的示例图)。问题是,一旦我在 mayaVI 管道中进行了这些更改,似乎无法保存这些设置,直到下一次我想重绘图形。

我对编辑曲面的 Contour 属性和向量的 Glyph Source 属性(轴半径、尖端半径、尖端长度)特别感兴趣。

问题:有没有一种简单的方法可以将 Mayavi 管道设置保存到下一次,或者直接在我的 Python 脚本中编辑它们(即不使用 UI)?

例子: 在此处输入图像描述

代码:

0 投票
0 回答
267 浏览

python - 具有大数据集的 Mayavi 3D 体积

我正在尝试用大数据集绘制 3D 体积。我的数据集可以大于 RAM 和本地磁盘。因为这个我得到MemoryError

我尝试创建虚拟内存,希望当我与 3D 体积切片交互时,它会调用数据并仅提取需要的部分,但不起作用。这么大的数据可以可视化吗?

我的数据集是 3D numpy 数组

我的代码:

0 投票
0 回答
162 浏览

python - mayavi:两个表面相互阻碍,即使它们不相交

我正在尝试绘制两个恰好在两个点接触但在其他方面分离良好的表面。根据视角的不同,这要么渲染得很好(图 1),要么使顶部表面s2(等离子,红色)遮挡下部表面s1(图 2)。我想这是由于绘制表面的顺序,所以 mayavi 只是把一个放在前面,即使在数学上它应该放在后面。我该如何解决这个问题?请注意,我希望两个表面都有不同的颜色图,因为它们代表不同的事物。非常感谢!

图 1,正确的情节 图 1,正确的情节 图2,错误的情节 图 2,错误的情节

这里是生成情节的代码。在交互式窗口中选择了视角,不确定如何获得数值。

编辑:终于发现了问题:需要指定正确的渲染后端。使用ipython3 --gui=qt解决了这个问题。因此,该问题仅在使用默认后端(无论哪个)时出现。我希望这会在某个地方更清楚地记录下来,这会为我节省很多工作。

0 投票
0 回答
344 浏览

python - 如何将坐标系移动到 3D mayavi.mlab 场景的中心?

我做了一些图像处理,为此我想使用 mayavi.mlab 可视化我的数据(我有一个 3D 单位向量的分布)。但是,我想在单位球面上显示我的数据。使用 mlab.axes 我得到了一个笛卡尔坐标系,这很好。但我希望这个坐标系移动到球体的中心。我怎样才能做到这一点?

我已经有了球体、我的数据球体上的网格(未在提供的代码片段中显示)、颜色条等。我还尝试使用 mlab.plot3d 自己构建坐标系,然后绘制 3 条线。但当然,这些行的末尾没有标签、刻度或箭头。

有没有一种简单的方法来获得一个居中的坐标系,还是我必须自己构建它?如果是这样,我怎样才能在线条上添加箭头、标签和刻度?

提前致谢

噬菌体

0 投票
0 回答
206 浏览

python - 我需要在一个屏幕中绘制多个 mayavi 图,并且可以一次选择一个

我有一个数据框,其中有 11 列,前 3 列给了我 x、y、z 坐标。其余 8 列我需要单独绘制。

这是我试图绘制两列的示例代码。我对结果很满意,但是有了这个,“Fx”、“Fy”的所有情节都进入了一个情节。我想要一个屏幕,但我希望我应该能够在“Fx”“Fy”、、、等之间切换。正如您在图像中看到的那样,一旦我将绘制所有 8 列,则很难从一张图像中读取。

在此处输入图像描述

0 投票
0 回答
168 浏览

python - 通过给定范围更改 Mayavi plot3d 函数中的颜色

我有一个包含 4 列 x、y、z 和幅度(需要绘制的值)的数据框,幅度值从 0 到 30.3 不等。如果给我最大和最小幅度,我需要绘制表面。假设我的最小震级为 2.0,最大震级为 10.0。所以我想以这样的方式绘制它,即大于最大值的值应该以红色突出,小于最小值的值应该以绿色突出。

我尝试了以下代码,但我得到了全绿色的情节。

下图是我使用以下代码时得到的。现在,我只想说,如果我将最大值设置为 10,那么所有高于 10 的值,即 10 到 27.1 都应该用可以突出显示的单色表示,因为我对那个高值不满意。与较低的值类似,如果我将 2 设置为较低的值,那么所有低于 2 的值都应该是单一颜色。在爆炸图像中,我很难将高于 10 的值视为难以阅读。

在此处输入图像描述] 1

0 投票
1 回答
1517 浏览

python - 为什么 Mayavi 内联图在 Jupyter Notebook 中显示为文本?

我按照此处的说明在 jupyter notebook 中使用 mayavi 设置内联图,但它不起作用。当我运行以下代码时,

它不是在笔记本中显示内联绘图,而是在单元格下方打印以下内容:

为什么会发生这种情况?我已确保 mayavi 已更新到版本4.7.1并且我正在使用ipy后端。

0 投票
1 回答
268 浏览

python-3.x - ScalarCutPlane mayavi 未显示 Mayavi 等值面图的横截面(轮廓)

我想获得类似于此 stackoverflow question的横截面图像。但是当我尝试做同样的事情时,我无法获得情节的轮廓,但我得到了mayavi iso-surface plot 和 scalar_cut_planeplot opacity=0.0

但是我想要一个像stackoverflow exstackoverflow ex image2这样的横截面图像

可重现的代码:

上面提到的问题也没有回答。在获得交叉图像后,我想进一步处理它,因此在这方面的任何帮助也将不胜感激。

提前致谢!!