3. mlab基础

来源:互联网 发布:业务本软件 编辑:程序博客网 时间:2024/05/21 11:46

  • mayavimlabshow
    • 函数形式
    • 实例代码
  • Points3d
    • 函数形式
    • 参数意义
    • 实例代码
    • 运行结果
  • plot3d
    • 函数形式
    • 参数意义
    • 实例代码
    • 运行结果
  • imshow
    • 函数形式
    • 参数意义
    • 实例代码
    • 运行结果
  • surf
    • 函数形式
    • 实例代码
    • 运行结果
  • contour_surf
    • 实例代码
    • 运行结果
  • contour3d
    • 函数形式
    • 参数意义
    • 实例代码
    • 运行结果
  • quiver3d
    • 函数形式
    • 参数意义
    • 实例代码
    • 运行结果
  • 改变物体颜色
    • 常见的colormaps
    • 实例代码
    • 运行结果

1. mayavi.mlab.show()

函数形式

mayavi.mlab.show(func = None, stop = False)

实例代码

官方文档
Here is a simple example demonstrating the use of show:

from mayavi import mlabmlab.test_contour3d()mlab.show()

You can stop interaction via a simple pop up UI like so:

mlab.test_contour3d()mlab.show(stop=True)

The decorator can be used like so:

@mlab.showdef do():   mlab.test_contour3d()do()

The decorator can also be passed the stop argument:

@mlab.show(stop=True)def do():   mlab.test_contour3d()do()

2. Points3d()

函数形式

points3d(x, y, z…)
points3d(x, y, z, s, …)
points3d(x, y, z, f, …)

参数意义

参数 说明 x,y,z numpy数组、列表或者其他形式的点三维坐标 s 在该坐标点处的标量值 f 通过函数f(x,y,z)返回的标量值 color VTK对象的颜色,定义为(0,1)的三元组 colormap colormap的类型,例如RedsBluesCopperextent xyz数组范围[xmin, xmax, ymin, ymax, zmin, zmax] figure 画图 line_width 线的宽度,该值为float,默认为0.2 mask_points 减少/降低大规模点数据集的数量 mode 符号的模式,例如2darrow2dcirclearrowconename VTK对象名字 opcity Vtk对象的整体透明度,该值为float型,默认为1.0 reset_zoom 对新加入场景数据的放缩进行重置。默认为True resolution 符号的分辨率,如球体的细分数,该值为整型,默认为8 scale_factor 符号放缩的比例 scale_mode 符号的放缩模式,如vectorscalarnone transparent 根据标量值确定actor的透明度 vmaxcolormap放缩的最大值 vmincolormap放缩的最小值

实例代码

import numpy as npfrom mayavi import mlab# 建立数据t = np.linspace(0, 4 * np.pi, 20)  # 0-4pi之间均匀的20个数x = np.sin(2 * t)y = np.cos(t)z = np.cos(2 * t)s = 2 + np.sin(t)# 对数据进行可视化points = mlab.points3d(x, y, z, s, colormap="Greens", scale_factor=.25)mlab.show()

运行结果

这里写图片描述

3. plot3d ()

函数形式

plot3d(x, y, z…)
plot3d(x, y, z, s, …)

参数意义

colorcolormapextentfigureline_widthnameopacityrepresentationreset_zoomtransparenttube_radiustube_sidesvmaxvmin参考上面表格。

参数 说明 x,y,z numpy数组,或列表。给出了线上连续的点的位置 s 在该坐标点处的标量值 tube_radius 线管的半径,用于描述线的粗细 tube_sides 表示线的分段数,该值为整数,默认为6

实例代码

import numpy as npfrom mayavi import mlab# 建立数据n_mer, n_long = 6, 11dphi = np.pi / 1000.0phi = np.arange(0.0, 2 * np.pi + 0.5 * dphi, dphi)mu = phi * n_merx = np.cos(mu) * (1 + np.cos(n_long * mu / n_mer) * 0.5)y = np.sin(mu) * (1 + np.cos(n_long * mu / n_mer) * 0.5)z = np.sin(n_long * mu / n_mer) * 0.5# 对数据进行可视化l = mlab.plot3d(x, y, z, np.sin(mu), tube_radius=0.025, colormap='Spectral')mlab.show()

运行结果

这里写图片描述

4. imshow ()

函数形式

imshow(s, …)

参数意义

colorcolormapextentfigureinterpolateline_widthnameopacityreset_zoomtransparentvmaxvmin参考上面表格。

参数 说明 s 一个二维数组,s的值使用colormap被映射为颜色 interpolate 图像中的像素是否被插值,该值为布尔型,默认为True

实例代码

import numpyfrom mayavi import mlab# 建立数据s = numpy.random.random((10, 10))# 对数据进行可视化img = mlab.imshow(s, colormap='gist_earth')mlab.show()

运行结果

这里写图片描述

5. surf()

函数形式

surf(s, …)
surf(x, y, s,…)
surf(x, y, f,…)
s是一个高程矩阵,用二维数组表示。

实例代码

import numpy as npfrom mayavi import mlabdef f(x, y):    return np.sin(x - y) + np.cos(x + y)x, y = np.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]s = mlab.surf(x, y, f)mlab.show()

运行结果

这里写图片描述

contour_surf()

与Surf()类似,但求解的是等值线。

实例代码

import numpy as npfrom mayavi import mlabdef f(x, y):    return np.sin(x - y) + np.cos(x + y)x, y = np.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]con_s = mlab.contour_surf(x, y, f)mlab.show()

运行结果

这里写图片描述

6. contour3d()

函数形式

contour3d(scalars, …)
contour3d(x, y, z, scalars,…)

参数意义

参数 说明 x,y,z 三维空间坐标 scalars 网格上的数据,用三维numpy数组表示 contours 定义等值面的数量

实例代码

import numpyfrom mayavi import mlabx, y, z = numpy.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]scalars = x * x + y * y + z * zobj = mlab.contour3d(scalars, contours=8, transparent=True)mlab.show()

运行结果

这里写图片描述

7. quiver3d()

函数形式

quiver3d(u,v,w …)
quiver3d(x,y,z,u,v,w …)
quiver3d(x,y,z,f,…)

参数意义

参数 说明 u,v,w 用numpy数组表示的向量 x,y,z 表示箭头的位置 f 返回在给定位置(x,y,z)的(u,v,w)矢量

实例代码

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[-2:3, -2:3, -2:3]r = np.sqrt(x ** 2 + y ** 2 + z ** 4)u = y * np.sin(r) / (r + 0.001)v = -x * np.sin(r) / (r + 0.001)w = np.zeros_like(z)obj = mlab.quiver3d(x, y, z, u, v, w, line_width=3, scale_factor=1)mlab.show()

运行结果

这里写图片描述

8. 改变物体颜色

colormap定义的颜色,也叫LUT。 LUT:Look Up Table。

常见的colormaps

=accent、flag、autumn、gist_earth、black-white、gist_gray、blue-red、gist_heat、blues、gist_ncar、bone、gist_rainbow、brbg、gist_stern、bugn、gist_yarg、bupu、gnbu、cool、gray、copper、greens、dark2、greys、hot、pubu、hsv、pubugn、jet、puor、oranges、purd、orrd、purples、paired、rdbu、pastel1、rdgy、pastel2、rdpu、pink、rdylbu、piyg、rdylgn、prgn、reds、prism、set1、set2、set3、spectral、spring、summer、winter、ylgnbu、ylgn、ylorbr、ylorrd

实例代码

import numpy as npfrom mayavi import mlab#建立数据x, y = np.mgrid[-10:10:200j, -10:10:200j]z = 100 * np.sin(x * y) / (x * y)# 对数据进行可视化mlab.figure(bgcolor=(1, 1, 1))surf = mlab.surf(z, colormap='cool')# 更新视图并显示出来mlab.show()
import numpy as npfrom mayavi import mlab# 建立数据x, y = np.mgrid[-10:10:200j, -10:10:200j]z = 100 * np.sin(x * y) / (x * y)# 对数据进行可视化mlab.figure(bgcolor=(1, 1, 1))surf = mlab.surf(z, colormap='cool')# 访问surf对象的LUT# LUT是一个255*4的数组,列向量表示RGBA,# 每个值的范围从0-255lut = surf.module_manager.scalar_lut_manager.lut.table.to_array()# 增加透明度,修改alpha通道lut[:, -1] = np.linspace(0, 255, 256)surf.module_manager.scalar_lut_manager.lut.table = lut# 更新视图并显示出来mlab.show()

运行结果

这里写图片描述
这里写图片描述