Mayabi: mlab

日期2017-07-13 (最后修改), 2006-02-21 (创建)

||\<#80FF80> 此页面介绍 tvtk.tools.mlab 模块。强烈建议您使用更新的 mayavi.mlab 模块,该模块也可以从 ipython -wthread 或作为另一个应用程序中的库使用。||

``mlab.py`` 模块允许对对象进行简单的 3D 绘制。它提供了一种面向对象的 3D 可视化方法。

它依赖于简单的 TVTK 模块,而不是完整的 Mayavi 应用程序。因此,它对依赖项的要求较低。但是,它更难扩展,功能也更有限。开发人员不打算为该模块添加任何功能,我们强烈建议您使用 Mayavi mlab 模块,该模块提供相同的用例,但具有更多功能,并且正在不断开发中。有关更多信息,您可以阅读 Mayavi 用户指南的相关部分

''' 目录 '''

一个简单的示例

||\<#FF8080> 重要提示: 所有这些示例都必须在 "ipython -wthread" 或 Wx 应用程序(如 pycrust 或 Mayavi2 应用程序)中运行。如果您不使用此选项,它们将无法工作。||

从 `ipython -wthread` 开始,粘贴以下代码:

在 [ ]
import scipy

# prepare some interesting function:
def f(x, y):
    return 3.0*scipy.sin(x*y+1e-4)/(x*y+1e-4)

x = scipy.arange(-7., 7.05, 0.1)
y = scipy.arange(-5., 5.05, 0.1)

# 3D visualization of f:
from enthought.tvtk.tools import mlab
fig = mlab.figure()
s = mlab.SurfRegular(x, y, f)
fig.add(s)

更改轴和颜色

在 [ ]
from scipy import *

[x,y]=mgrid[-5:5:0.1,-5:5:0.1]
r=sqrt(x**2+y**2)
z=sin(3*r)/(r)

from enthought.tvtk.tools import mlab

# Open a viewer without the object browser:
f=mlab.figure(browser=False)

s=mlab.Surf(x,y,z,z)
f.add(s)
s.scalar_bar.title='sinc(r)'
s.show_scalar_bar=True
# LUT means "Look-Up Table", it give the mapping between scalar value and color
s.lut_type='blue-red'
# The current figure has two objects, the outline object originaly present, 
# and the surf object that we added.
f.objects[0].axis.z_label='value'
t=mlab.Title()
t.text='Sampling function'
f.add(t)
# Edit the title properties with the GUI:
t.edit_traits()

不同功能列表

这里提供的实现是面向对象的,每个可视化功能都实现为一个具有特性的类。因此,这些功能中的每一个都可以配置。每个可视化类都派生(最终)自 MLabBase,MLabBase 负责将它的参与者添加到渲染窗口中或从渲染窗口中移除。这些类都要求 RenderWindow 为 `pyface.tvtk.scene.Scene` 实例(如果需要,以后可以放宽此约束)。

此模块提供以下广泛的类功能

*Figure\ 这基本上管理所有渲染的对象。就像任何类似 Matlab 的环境中的 figure 一样。一个名为 `figure` 的便利函数可用于创建漂亮的 Figure 实例。

*Glyphs\ 此类及其子类允许人们在作为输入指定的点处放置字形。子类包括:`Arrows`、`Cones`、`Cubes`、`Cylinders`、`Spheres` 和 `Points`。

*Line3\ 在初始化时指定的点之间绘制线条。

*Outline\ 为包含的对象绘制轮廓。

*Title\ 为整个图形绘制标题。

*LUTBase\ 管理查找表及其标量条(图例)。所有需要 LUT 的类都继承自此类。

*SurfRegular\ MayaVi1 的 imv.surf 类似功能,它根据 x(1D)、y(1D)和 z(或可调用)数组绘制曲面。

*SurfRegularC\ 还绘制等高线。

*TriMesh\ 给定三角形连接性和点,绘制它们的网格。

*FancyTriMesh\ 使用管子和球体绘制网格,使其更精美。

*Mesh\ 给定从 scipy.mgrid 生成的 x、y,以及与之匹配的 z。以及可选的标量。此类构建三角形连接性(假设 x、y 来自 scipy.mgrid),并构建网格并显示它。

*FancyMesh\ 与 mesh 相似,但使用管子和球体显示网格。

*Surf\ 此类生成一个曲面网格,就像 Mesh 一样,但将网格渲染为曲面。

*Contour3\ 显示网格的等高线。

*ImShow\ 允许人们使用图像参与者将大型数值数组视为图像数据。这就像 MayaVi1 的 `mayavi.tools.imv.viewi` 一样。

要查看所有这些的示例,请查看此文件末尾的 `test_*` 函数。以下是一个使用这些测试函数的简单示例。

在 [ ]
from enthought.tvtk.tools import mlab
f = mlab.figure()
mlab.test_surf(f) # Create a spherical harmonic.
f.pop() # Remove it.
mlab.test_molecule(f) # Show a caffeine molecule.
f.renwin.reset_zoom() # Scale the view.
f.pop() # Remove this.
mlab.test_lines(f) # Show pretty lines.
f.clear() # Remove all the stuff on screen.

章节作者:ArndBaecker、GaelVaroquaux、Christian Gagnon

附件