9. mlab基础

匿名 (未验证) 提交于 2019-12-03 00:03:02

1. mayavi.mlab.show()

函数形式

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

实例代码

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

from mayavi import mlab mlab.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.show def 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的类型,例如RedsBluesCopper
extent xyz数组范围[xmin, xmax, ymin, ymax, zmin, zmax]
figure 画图
line_width 线的宽度,该值为float,默认为0.2
mask_points 减少/降低大规模点数据集的数量
mode 符号的模式,例如2darrow2dcirclearrowcone
name VTK对象名字
opcity Vtk对象的整体透明度,该值为float型,默认为1.0
reset_zoom 对新加入场景数据的放缩进行重置。默认为True
resolution 符号的分辨率,如球体的细分数,该值为整型,默认为8
scale_factor 符号放缩的比例
scale_mode 符号的放缩模式,如vectorscalarnone
transparent 根据标量值确定actor的透明度
vmax colormap放缩的最大值
vmin colormap放缩的最小值

实例代码

import numpy as np from 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 np from mayavi import mlab  # 建立数据 n_mer, n_long = 6, 11 dphi = np.pi / 1000.0 phi = np.arange(0.0, 2 * np.pi + 0.5 * dphi, dphi) mu = phi * n_mer x = 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 numpy from 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 np from mayavi import mlab   def 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 np from mayavi import mlab   def 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 numpy from mayavi import mlab  x, y, z = numpy.ogrid[-5:5:64j, -5:5:64j, -5:5:64j] scalars = x * x + y * y + z * z obj = 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 np from mayavi import mlab  x, 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 np from 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 np from 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-255 lut = 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() 

运行结果


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!