运行mlab脚本

Mlab和Mayavi的其他部分一样,是一个交互性的应用。如果当前不是集成环境,您需要使用show函数开启交互。假设您在编写脚本,您每次都需要调用show显示图像。

使用IPython,mlab指令可以交互式进行,或者也可以使用IPython执行 %run command:

使用IPython,mlab指令可以交互式进行,或者也可以使用IPython执行 %run command:

In [1]: %run my_script

您需要使用 –gui=qt 开启Qt界面选项。在这个环境下,绘图命令是可交互的:不用show函数也能马上呈现效果。

Mlab也能在Mayavi2应用中进行交互,确切来说,所有以wxPython为基础的Python脚本都可以进行(比如其他的Envisage基础的应用,如SPE)。

与Matplotlib一起使用

如果您想在IPython中使用同时使用Matplotlib和Mayavi进行交互,您应该:

  • 打开IPython:

    $ ipython --matplotlib=qt
    
  • 相应地,打开IPython的图像界面:–gui=qt

    $ ipython --gui=qt
    

    在调用任何matplotlib的模块之前,需要先输入以下Python命令:

    >>> import matplotlib
    >>> matplotlib.use('Qt4Agg')
    >>> matplotlib.interactive(True)
    
  • one could also use the --pylab option to IPython as follows:

    $ ipython --pylab=qt
    

如果您想要默认情况下让mlab和matplotlib在IPython一起工作,您可以修改matplotlib的后端配置:编辑`~/.matplotlib/matplotlibrc`配置文件,添加下面内容:

backend     : Qt4Agg

如果因为某些原因,Qt后端无法正常使用,您可以使用wx后端。您可以这样做:

$ ETS_TOOLKIT=wx
$ ipython --gui=wx

Note that as far as Mayavi is concerned, it chooses the appropriate toolkit using the ETS_TOOLKIT environment variable. If this is not set, the supported toolkits are tried in a version-dependent order until one succeeds. With recent releases of traitsui, the default is Qt. The possible options for ETS_TOOLKIT are:

  • qt4: 使用Qt后端(PySide 或 PyQt4)

  • wx:使用wxPython

  • null:使用无界面的工具箱

将mlab绘图集成到pylab中

从Mayavi的3.4.0的版本开始,mlab函数可以捕获当前图像的截图,该功能已经集成到matplotlib中。

脚本

Mlab绘图命令可以写入文件做成一个脚本。脚本的加载方式可以通过*File->Refresh code*菜单栏进入,也可以通过键盘``Control-r``的方式。当然也可以由Mayavi应用通过``-x``打开

前面提到过集成环境,但当使用`python myscript.py`的命令运行在非集成环境时,需要调用show函数(这里有一个案例),它会开启交互并显示您的图像。

您也可以使用装饰器的方法,将被调用的mlab函数放在一个定义的函数体中会使其变得更加灵活,然后它将开启事件循环event-loop的交互界面:

from mayavi import mlab
from numpy import random

@mlab.show
def image():
   mlab.imshow(random.random((10, 10)))

在这个装饰器的作用下,每次调用绘图函数,mlab都会确保交互开启。如果交互没能启动,mlab会打开它直到关闭交互之前都不会直接返回其函数对象。