运行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绘图命令可以写入文件做成一个脚本。脚本的加载方式可以通过*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会打开它直到关闭交互之前都不会直接返回其函数对象。