跳至主要內容

mlab

荒流2019年11月12日大约 5 分钟约 1647 字

1. mlab 绘图函数

mlab 的绘图函数:

data 维度绘图函数函数描述
0Dpoints3d()基于 array 类型的 x, y, z 提供的三维点坐标(x, y, z 的形状必须相同),绘制离散点
1Dplot3d()基于 1-d array 类型的 x, y, z 提供的三维坐标,绘制线图形
2Dimshow()将 2-d array 可视化为一张图像
2Dsurf()将 2-d array 可视化为"表面图"(carpet plot),以 z 轴代表点的高度
2Dcontour_surf()将 2-d array 可视化为等高线,高度值由相应位置的数值表示
2Dmesh()由 3 个 2-d array 类型的 x, y, z 提供的三维坐标,绘制网络表面图
2Dbarchart()参数看 help,绘制三维柱状图
2Dtriangular_mesh()参数看 help,绘制三角网络面
3Dcontour3d()由 3-d array 绘制等值面
3Dquiver3d()参数看 help,绘制矢量数据的箭图
3Dflow()由 3 个 3-d array 表示的网络上的 u, v, w 分量绘制粒子在矢量场的轨迹图
3Dvolume_slice()参数看 help,绘制切割体数据的交互式平面

注意事项:

  1. 在用 surf()contour_surf()函数时,z 轴的单位长度默认和 x, y 轴相同,但可以通过设置 warp_scale 参数来调整,当设置为 warp_scale='auto'时,纵横比将被定为 2/3.
  2. 只知道点的位置信息不足以定义一个平面,还需要知道点的连接(connectivity)信息。
    • 当使用 surf()mesh()函数时,连接信息隐式地从输入数组的形状中提取,即 "neighboring data points in the 2D input arrays are connected, and the data lies on a grid".
    • 当使用 triangular_mesh()函数时,……
  3. 结构化与非结构化数据:contour3d(), volume_slice(), flow()函数需要输入有序的数据(以便能够在点之间插值),而 quiver3d() 则没有限制。详细信息查看每个函数的文档。

外观展示的参数设置:

参数含义补充说明
colormap颜色风格accent flag hot pubu set2 autumn gist_earth hsv pubugn set3 black-white gist_gray jet puor spectral blue-red gist_heat oranges purd spring blues gist_ncar orrd purples summer bone gist_rainbow paired rdbu winter brbg gist_stern pastel1 rdgy ylgnbu bugn gist_yarg pastel2 rdpu ylgn bupu gnbu pink rdylbu ylorbr cool gray piyg rdylgn ylorrd copper greens prgn reds dark2 greys prism set1
colorVTK 对象的颜色定义为(0, 1)的三元组,如果存在的话会覆盖掉 colormap 的设置
mask_points减少/降低大规模点数据集的数量
resolutionglyph 的分辨率如球的细分数,该值点整型,默认为 8
scale_factor点(glyph)的缩放比例
scale_mode符号的缩放模式如,vector, scalar, none
…………

gallery:

advanced mlab examples

2. mlab 控制函数

图形控制函数:

图形装饰函数:

函数说明示例
colorbar为给定对象的颜色映射增加颜色条mlab.colorbar(object=None, title=None, orientation=None, nb_labels=None, nb_colors=None, label_fmt=None)
scalarbar为给定对象的标量颜色映射增加颜色条mlab.scalarbar(object=None, title=None, orientation=None, nb_labels=None, nb_colors=None, label_fmt=None)
vectorbar为给定对象的矢量颜色映射增加颜色条mlab.vectorbar(object=None, title=None, orientation=None, nb_labels=None, nb_colors=None, label_fmt=None)
xlabel建立坐标轴,并添加 x 轴的标签mlab.xlabel(text, object=None)
ylabel建立坐标轴,并添加 y 轴的标签
zlabel建立坐标轴,并添加 z 轴的标签

相机控制函数:

其他函数:

函数说明示例
animate动画控制函数mlab.animate(func=None, delay=500, ui=True)
axes为当前/给定对象设置坐标轴mlab.axes(*args, **kwargs)
outline为当前/给定对象建立外轮廓mlab.outline(*args, **kwargs)
show与当前图像开始交互mlab.show(func=None, stop=False)
show_pipeline显示 mayavi 的管线对话框

mayavi 的mlab,会在几乎每一次调用(包括imoprt时)都创建一个 python“图形化”进程,即便设置了mlab.options.offscreen=True也会创建“图形化”进程,只不过这时没有显示出窗口,但这个进程的属性仍然是“图形化”属性,这会试图调用 OpenGL 相关的一个包来进行渲染(虽然不显示出来,但是例如投影射线等操作还是需要进行渲染计算的)reference

3. mlab.pipeline

For each Mayavi module or filter (see Modules and Filters), there is a corresponding mlab.pipeline function. The name of this function is created by replacing the alternating capitals in the module or filter name by underscores. Thus ScalarCutPlane corresponds to scalar_cut_plane.

mlab提供了一个子模块pipeline,其提供了一些能在脚本中轻松构成pipeline的函数:

相较于mlab的主要接口,mlab.pipeline中的函数可以通过Mayavi管道对图形进行更精细化的控制。

详见