关于numpy数组的3D可视化

通过`mlab`的一系列函数,可以对numpy进行数据可视化。

mlab`函数将numpy数组作为输入,描述数据的``x`, y, z 坐标,并以此构建成熟的可视化:如果有需要,它们可以完成data source数据源层级、filter滤波层级以及visualization module可视化模块层级的创建。与matplotlib的pylab类似,它们的创建过程可以通过关键字参数进行调整。此外,它们都可以返回创建的可视化模块对应的对象,因此可以通过修改它们的属性对可视化进行修改。

备注

这一节,我们仅列出不同的函数。对于每一个函数的具体用法请参考`mlab-reference`,在这份指南的最后,我们将附上图像和案例。

0D数据 和 1D数据

points3d 方法

points3d`方法 它将显示数据所给位置的图形(如点状,可以是其他形状),其位置信息由numpy数组给定,坐标由``x`, y, z 表示。

plot3d 方法

plot3d`方法将绘制线,数据``x`, y, z 坐标由1D的numpy数组给定,并且三个坐标的长度必须一致。

2D数据

imshow方法

imshow 可以将2D数组可视化成一张图像。

surf 方法

surf方法将2D数组平铺成一张毯子,并用z坐标表示高度。

contour_surf 方法

`contour_surf`将使用2D数组绘制等高线,并用一个坐标表示等高线的高度。

mesh 方法

mesh`方法用于绘制面绘制,由3个2D数组给定, ``x`, y, z 将坐标以网格形式绘出。与`surf`方法不同,2D数组``x``, y ,``z`` 所给定的网格连接方式不是默认给出的,它需要特别给定,因此能创建更复杂的网格连接形式。译者注:更多细节读者请阅读`Data representation in Mayavi`

barchart方法

`barchart`方法将对数组或者对一系列给定的坐标点进行可视化。例如,柱状图中,x,y,z表示坐标,s表示高度。该函数通用性较强,可以接受2D或3D数据,也可以接受点云。

triangular_mesh 方法

triangular_mesh 用于绘制三角形网格,其顶点由``x``, y,``z``坐标给定,坐标的维度为 (n, 3) 。

3D数据

coutour3d方法

contour3d 方法用于绘制3D体数据的等值面。

quiver3d 方法

quiver3d 方法将为数据绘制箭头。x, y, z``为位置坐标,``u, v, ``w``为方向,均由numpy数组给定。 译者注:矢量可视化可采用quiver3d,需要传入6个参数,样式也可由参数传入,注意箭头大小和方向均由uvw控制。

flow 方法

flow方法用于绘制粒子的轨迹,它由三个3D数组给定。

slice 方法

volume_slice 方法用于绘制一个可交互的平面,它可以对体数据进行切片。 译者注:volume_slice 更多是一种可视化的辅助手段,如医学影像,体数据核磁等的可视化,生成一个可灵活控制的组织切面方便观察。

备注

如果要对可视化有更多要求,丰富其细节则需要自己配置pipeline管线:从data sources数据源层级到filter滤波层级,再到module可视化模块层级进行逐层搭建。相关内容请参考下面的章节,controlling-the-pipeline-with-mlab-scripts`和`mlab-case-studies