问题标签 [mayavi]

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 投票
1 回答
2555 浏览

python - 是否可以直接将仿射变换矩阵应用于 Mayavi ImageActor 对象?

我正在使用Mayavi渲染一些由 3D 体积内的多个 2D 平面组成的成像数据,其位置、方向和比例由 4x4 刚体仿射变换矩阵定义。每架飞机包括:

  • 二维图像数据数组,我使用mayavi.mlab.imshow
  • 一组 ROI,由我分别使用mayavi.mlab.points3d和绘制的线和点组成mayavi.mlab.plot3d

我将我的点和线顶点从 2D 参考平面转换为 3D 空间,方法是用我的仿射矩阵点它们的坐标。根据我之前的问题/答案我发现我可以ImageActor单独设置对象的位置和方向,使用:

现在情节看起来像这样:

在此处输入图像描述

一切都很好地排列,但很难解释,因为平面在 z 中的间隔非常密集。我现在想做的是通过一些比例因子“拉伸”z轴。在点和线的情况下,这很容易做到——我所做的就是将所有转换后的 z 坐标乘以一个比例因子。

但是,我不知道如何对图像应用相同的转换。如果我只是缩放 z 位置,图像的旋转和缩放当然是错误的,并且我绘制的点/线将不再与图像落在同一平面上:

在此处输入图像描述

我需要做的是应用非刚性仿射变换,该变换结合了剪切以及旋转、平移和缩放到我的图像。

有什么方法可以手动将剪切应用于ImageActor,或者甚至更好地直接应用我预先计算的任意 4x4 仿射矩阵?

0 投票
0 回答
493 浏览

python - 如何在 MayaVI 中使用仿射变换获取 3D 数据切片

我正在可视化在常规但非正交且未与“x”“y”“z”坐标网格对齐的标量场。通过将数据放入常规网格并像这样应用仿射变换,体积可视化效果很好

但是,当我尝试对相同数据进行 2D 切割平面时,我迷路了。我尝试过image_plane_widgetscalar_cut_plane没有成功:他们没有可以应用仿射变换的演员。或者,至少,我找不到如何获得它们。Mayavi 帮助系统也没有帮助:只记录了一些琐碎的东西。有人可以帮忙吗?

0 投票
1 回答
1050 浏览

python - MayaVi:显示 mlab 段错误

我正在尝试学习 MayaVi,但被卡在打开的数字上。

在 mlab 中显示数字只会导致段错误。我绘制的内容似乎并不重要,所以我认为问题在于显示的行为,而不是我试图显示的对象。例如:

导致错误:

我在 Linux 上使用 Python 2.7.3、EPD 7.3-1(64 位)。

编辑:如果我尝试显示图像,我实际上会得到一个不同的错误,这是我的目标之一。

结果是

EDIT2:好的,打开数字绝对是一个问题,因为如果我只是测试:

我收到初始错误(段错误)。

0 投票
0 回答
271 浏览

scale - MayaVi:用“错误”比例标记轴

我的坐标轴上的比例可以与我的情节不同吗?

我在 mayavi 中显示图像,然后在其周围绘制一些 3D 形状。我所有的测量都与图像的大小(即以像素为单位)有关,因此事物处于正确的相对位置。

但是图像是银河系的,我想用距离单位(kpc)而不是像素来标记轴。基本上,我需要以像素为单位标记轴,然后将所有值除以 20 以获得 kpc。那可能吗?

谢谢!

0 投票
2 回答
1373 浏览

python - 隐式定义体积的绘图表面

具有隐式定义的卷

为了

我将如何使用可用的 Python 模块(最好是 mayavi)绘制其外表面?

我知道函数 mlab.mesh,但我不明白它的输入。它需要三个二维数组,我不明白如何创建具有上述信息的数组。

编辑:

也许我的问题在于对 meshgrid() 函数或 numpy 的 mgrid 类的理解不足。我知道我必须以某种方式使用它们,但我并不完全理解它们的目的或这样的网格代表什么。

编辑:

我到了这个:

这会导致一个体积的等值面(对于 x*y*z=1),这并不是我想要的。我正在寻找的基本上是一种绘制任意表面的方法,例如“3d 多边形”(如果有的话)。

我创建了以下代码,它绘制了一个曲面(也适用于 mayavi)。我需要根据我的特定问题修改此代码,但要做到这一点,我需要了解为什么以及如何由三个 2d 数组定义 3d 表面?这些数组(xyz代表什么?

0 投票
1 回答
223 浏览

python - 如何通过 mlab.surf 3dplot 3 列数据

数据是这样的:

下面是我的代码,它只能绘制一个平面

这是我期待的效果:http: //philipp.spitzer.priv.at/notes/attachment/wiki/PythonPlotting/PythonPlottingSurf.png

0 投票
1 回答
1253 浏览

python - Python mayavi:向 3d 散点图添加点

我正在编写一个 python 应用程序来模拟粒子在 3 空间中的运动。我想绘制每个步骤的位置,在应用程序运行时更新绘图,在绘图上保留过去的位置。

我想用 mayavi 做到这一点,但据我所知,不能简单地将点添加到现有的散点图中,而必须一次性添加所有点。这不是我想要的。我想一次添加几个点,而不必将所有过去的点保留在内存中以在每一步重新绘制它们。

我一直在看的函数是 plot3d()。

http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.points3d

关于如何用 python mayavi 做我想做的事的任何想法?是否有另一个 python 3d 绘图包可以满足我的要求?

0 投票
1 回答
20221 浏览

python - 如何使用来自 scipy.interpolate 的 griddata

我有一个包含一百万行的三列(x 像素、y 像素、z 值)数据。数据来自图像并且存在重复的 z 值。现在我需要制作一个曲面图。这张图片就是一个很好的例子。但现在输出图像为空。有人可以检查代码吗?

0 投票
2 回答
1587 浏览

mayavi - Spyder 与 Mayavi

在后端使用 Canopy EPD 引擎时,是否可以使用不同的 IDE 作为前端?特别是,我想使用来自 Spyder 的 ipython 解释器的 mayavi.mlab 脚本。我正在使用运行 OSX 10.8 的 macbook pro。有没有办法设置这个?

我曾尝试使用 macports 设置 mayavi 和 spyder,但这似乎不起作用。我设法设置的唯一工作版本的 mayavi 从商业 Canopy 平台运行。因此,如果我不能让 macports mayavi 与 macports spyder 一起工作,我希望让 Canopy mayavi 与 spyder 一起工作。

谢谢。

阿德里安

0 投票
4 回答
6564 浏览

python - 在 MayaVi 中指定 3D 点的绝对颜色

我正在使用MayaVi Python 库来绘制 3d 点,使用points3d该类。文档指定每个点的颜色是通过第四个参数指定的s

此外,您可以传递与 x、y 和 z 形状相同的第四个数组 s,为每个点提供相关的标量值,或者传递一个函数 f(x,y,z) 返回标量值。此标量值可用于调制点的颜色和大小。

copper这为每个点指定了一个标量值,该值将点映射到颜色图,例如jethsv。例如从他们的文档中:

给出:

在此处输入图像描述

相反,我想将每个点的实际值指定为 (r, g, b) 元组。这在 MayaVi 中可行吗?我尝试用s元组数组替换 ,但抛出错误。