标签: mayavi

如何在mayavi中正确显示具有非立方体素的体积

我正在使用mayavi(3.3.2)来显示音量等值面.

一般来说,我的卷没有立方体素; 例如,采样网格在X和Y方向上可能是1mm x 1mm,但在Z方向上可能是1.4mm.

如何使用mayavi mlab.contour3dmlab.pipeline.iso_surface?使用正确的空间比例显示此类体积?我真的更愿意不将卷重新采样为立方网格.

说明问题的另一种方法:我可以做些什么来使下面的代码显示一个球体而不是一个扁平的elipsoid(将它volume与预期的1:1:2纵横比体素作为给定,并且不重新生成或重新采样体积).

import numpy as np
from enthought.mayavi import mlab

def sqr(x): return x*x

s=64
x,y,z = np.ogrid[0:s,0:s,0:s/2]

volume = np.sqrt(sqr(x-s/2)+sqr(y-s/2)+sqr(2*z-s/2))

isos = mlab.contour3d(volume,contours=[5,15,25],transparent=True)
mlab.show()
Run Code Online (Sandbox Code Playgroud)

我猜测应该有一些方法来获取底层的VTK图形管道(它的变换等)并插入适当的各向异性缩放(如果没有某种方式通过mlab API更直接地进行).

python volume scipy mayavi

8
推荐指数
1
解决办法
2516
查看次数

如何使用LaTeX数学符号标记Mayavi中的轴?

我在python脚本中导入mayavi来显示一些3D数据集,事实证明以下天真轴标签不起作用

from mayavi import mlab
axes =mlab.axes(xlabel='$\alpha$', ylabel='$\beta$', zlabel='$\sigma$')
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我无法从谷歌或用户手册中找到解决方案.

python mayavi

8
推荐指数
2
解决办法
2782
查看次数

在Python Mayavi中画一条线

如何在Python Mayavi中在3D空间中绘制线条?MLAB模块是否有一个函数允许我指定将绘制的线的起点和终点?

python plot line draw mayavi

8
推荐指数
2
解决办法
4184
查看次数

如何缩放mayavi2中的x和y轴?

我想使用mayavi.mlab.surf()与mayavi2进行三维绘图.这个函数有一个名为warp_scale的参数,可用于缩放z轴,我正在寻找类似的东西,但是对于x和y轴.

我可以通过乘以x和y数组然后使用mayavi.mlab.axes()中的ranges参数来手动执行此操作来更正轴标签,但是我正在寻找像warp_scale更直接的方法.

谢谢!

python axes scale surf mayavi

8
推荐指数
2
解决办法
2673
查看次数

在mayavi锁定相机

我正在尝试使用mayavi中的一系列数据文件制作动画.不幸的是我注意到相机没有锁定(它是缩放和缩小).我认为它正在发生,因为我的网格的Z组件正在改变,mayavi正在尝试重新计算比例.

我该如何解决? 在此输入图像描述 在此输入图像描述 在此输入图像描述

import numpy
from mayavi import mlab

mlab.figure(size = (1024,768),bgcolor = (1,1,1))
mlab.view(azimuth=45, elevation=60, distance=0.01, focalpoint=(0,0,0))
#mlab.move(forward=23, right=32, up=12)

for i in range(8240,8243):
    n=numpy.arange(10,400,20)
    k=numpy.arange(10,400,20)
    [x,y] = numpy.meshgrid(k,n)
    z=numpy.zeros((20,20))
    z[:] = 5

    M = numpy.loadtxt('B:\\Dropbox\\Master.Diploma\\presentation\\movie\\1disk_j9.5xyz\\'+'{0:05}'.format(i)+'.txt')
    Mx = M[:,0]; My = M[:,1]; Mz = M[:,2]
    Mx = Mx.reshape(20,20); My = My.reshape(20,20); Mz = Mz.reshape(20,20);


    s = mlab.quiver3d(x,y,z,Mx, My, -Mz, mode="cone",resolution=40,scale_factor=0.016,color = (0.8,0.8,0.01))

    Mz = numpy.loadtxt('B:\\Dropbox\\Master.Diploma\\presentation\\movie\\Mzi\\' + '{0:05}'.format(i) + '.txt')
    n=numpy.arange(2.5,400,2)
    k=numpy.arange(2.5,400,2)
    [x,y] = numpy.meshgrid(k,n)

    f = mlab.mesh(x, y, -Mz/1.5,representation = …
Run Code Online (Sandbox Code Playgroud)

python mayavi

8
推荐指数
2
解决办法
2175
查看次数

在3D绘图中显示真彩色2D RGB纹理?

我正在尝试通过RGB堆栈制作一系列2D平面的3D绘图,如下所示:

在此输入图像描述

我知道可以mpl_toolkits.mplot3d通过将每个像素的x,y,z坐标和RGB(A)颜色传递给plot_surface:

import numpy as np
from matplotlib import pyplot as pp
from mpl_toolkits.mplot3d.axes3d import Axes3D

def plot_stack_slices(rgbstack, scale=(1., 1., 1.), z_interval=10.):

    fig, ax = pp.subplots(1,1,subplot_kw={'projection':'3d'})
    ax.invert_zaxis()
    ax.hold(True)

    sx, sy, sz = scale
    nz, ny, nx, nc = rgbstack.shape

    stack_xyz = np.mgrid[:nx*sx:nx*1j, :ny*sy:ny*1j, :nz*sz:nz*1j]

    slices = rgbstack[::-z_interval]
    slice_xyz = np.rollaxis(stack_xyz, 3, 0)[::-z_interval]

    surflist = []

    for (img,xyz) in zip(slices, slice_xyz):
        x, y, z = xyz
        s = ax.plot_surface(x, y, z, facecolors=img**0.75, 
            rstride=50, cstride=50)
        surflist.append(s)

    return fig, …
Run Code Online (Sandbox Code Playgroud)

python 3d textures matplotlib mayavi

8
推荐指数
1
解决办法
2707
查看次数

您如何在Matplotlib或Mayavi中表示以下3D数据?

我有一大堆数据,我试图在3D中表示希望发现一个模式.我花了很长时间阅读,研究和编码,但后来我意识到我的主要问题不是编程,而是实际上选择了一种可视化数据的方法.

Matplotlib的mplot3d提供了很多选项(线框,轮廓,填充轮廓等),MayaVi也是如此.但是有很多选择(每个都有自己的学习曲线),我几乎迷失了,不知道从哪里开始!所以我的问题基本上是你必须处理这些数据时使用哪种绘图方法?

我的数据是基于日期的.对于每个时间点,我绘制一个值(列表'Actual').

但是对于每个时间点,我也有一个上限,一个下限和一个中间点.这些限制和中点基于种子,在不同的平面上.

我希望在我的"实际"读数中发生重大变化时或之前发现该点或识别模式.是在所有飞机的上限都满足时?或者彼此接近?当实际值接触上/中/下限时?是否在一个平面上的Uppers触及另一架飞机的降落时?

在我粘贴的代码中,我将数据集简化为几个元素.我只是使用简单的散点图和线图,但由于数据集的大小(可能是mplot3d的限制?),我无法用它来发现我正在寻找的趋势.

dates = [20110101,20110104,20110105,20110106,20110107,20110108,20110111,20110112]

zAxis0= [       0,       0,       0,       0,       0,       0,       0,       0]
Actual= [    1132,    1184,    1177,     950,    1066,    1098,    1116,    1211]

zAxis1= [       1,       1,       1,       1,       1,       1,       1,       1]
Tops1 = [    1156,    1250,    1156,    1187,    1187,    1187,    1156,    1156]
Mids1 = [    1125,    1187,    1125,    1156,    1156,    1156,    1140,    1140]
Lows1 = [    1093,    1125,    1093,    1125,    1125,    1125,    1125,    1125]

zAxis2= [       2,       2,       2,       2, …
Run Code Online (Sandbox Code Playgroud)

python r matplotlib mayavi mplot3d

7
推荐指数
1
解决办法
1838
查看次数

Mayavi可以渲染具有透明背景的人物场景吗?

我正在使用mayavi.mlab生成网格图,并希望背景不透明度为0.(或透明).这可能吗?

python background transparent mayavi

7
推荐指数
2
解决办法
3569
查看次数

ValueError:无法将工具包设置为wx,因为它已设置为qt4

以下导入

from mayavi import mlab
Run Code Online (Sandbox Code Playgroud)

生成值错误.

我使用setuptools安装了Mayavi(如此处所述).gui工作得很好(这里和那里有一些bug,但我仍然可以使用模块等).我猜测安装不顺利.任何建议我如何修复我的安装(如果这是什么问题)?

编辑1:

我卸载mayavi并重新安装它(使用pip),但valueError它仍然存在.

编辑2:

我安装的系统是虚拟的Ubuntu 15.04(使用VMware 6.0.6).我在这里粘贴了pip install mayavi输出.

编辑3: 重新安装以前的版本后Mayavi : 4.3.1,我仍然得到相同的错误.我在用Python : 2.7.9.

python mayavi

6
推荐指数
1
解决办法
2195
查看次数

VTK无法使用vtkClipClosedSurface构造适当的闭合曲面

以下是我所做的粗略解释vtk:

  1. 创建一个表面(一个最小的表面,与它不太相关,但几何结构很重要:陀螺仪有两个完全相互关闭的迷宫).
  2. vtkClipClosedSurface切断迷宫之一,使我得到了没有打开的表面的对象.一个规则的表面看起来是这样的,有一个封闭的表面看起来是这样.

这是我的问题:对于我的结构的更复杂的版本,我得到这个: 右下方的破损表面 你能看到它在左上角是如何正常工作的,靠近右下方它会停止创建曲面吗?有时我在最后一部分也会得到非常奇怪的三角形.

根据我的理解,vtkClipClosedSurface从表面法线知道在哪里关闭表面和不在哪里.问题是:我的结构的法线很好,它们都指向正确的方向.如果仔细观察结构,你会注意到下部基本上是顶部的反转,它逐渐变化,都在一个表面上.

我尝试修改我的结构,然后切割许多东西vtkSmoothPolyDataFilter,vtkCleanPolyData或者vtkPolyDataNormals.我甚至试图用边界表面提取vtkFeatureEdges,这导致了更糟糕的结果.甚至vtkFillHolesFilter没有产生任何可接受的结果.我的表面看起来完美无瑕,足以创造一个边界.

我不知道还有什么可以尝试的.其他结构也会发生这种情况.使用CAD工具修复它是不可能的,因为它应该是开箱即用的.请帮我!

这是几何不能正确关闭曲面的几何示例.这次我使用的vtkFillHolesFilter结果是结构内部的表面,而它们只应占据te对象的边界. 带错误的另一个几何体

如果你需要更详细的我的管道纲要,这里有:

  1. 使用创建表面 mayavi.mlab.contour3d
  2. 获得PolyData通过提取actor.mapper.input
  3. 将格式转换tvtk为常规格式vtk
  4. vtkClipClosedSurface 使用平面集合切除部分结构(当平面集合与结构边界相同时会发生错误)
  5. 想象它

编辑:好的,这没有得到足够的重视,所以我构建了一个最小的,完整的,可验证的工作示例来重现行为:

import numpy as np
import vtk  # VTK version 7.0
from mayavi import mlab  # mayavi version 4.4.4
from mayavi.api import Engine, OffScreenEngine
from tvtk.api import tvtk


def schwarz_D(x, y, z, linear_term=0): …
Run Code Online (Sandbox Code Playgroud)

python triangulation vtk python-3.x mayavi

6
推荐指数
1
解决办法
728
查看次数

标签 统计

mayavi ×10

python ×10

matplotlib ×2

3d ×1

axes ×1

background ×1

draw ×1

line ×1

mplot3d ×1

plot ×1

python-3.x ×1

r ×1

scale ×1

scipy ×1

surf ×1

textures ×1

transparent ×1

triangulation ×1

volume ×1

vtk ×1