9. mlab基础

痞子三分冷 提交于 2019-11-29 11:53:41

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()

运行结果

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

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