12.1 Mayavi概述

12.1.1 初识Mayavi

Mayavi2(以后我们统称为Mayavi)是Mayavid的第二个版本。Mayavi是用于三维科学数据可视化的通用跨平台工具。Mayavi2致力于提供3D数据或3D绘图的简单和交互式可视化。它的主要特性包括:

  • 对2维和3维标量、向量和张量数据进行可视化。

  • 通过自定义源、模块和数据过滤器,易于扩展。

  • 通过mlab进行快速绘图

Mayavi拥有强大的可扩展性能。Mayavi提供了一个自身可用的Mayavi应用程序。除此之外,Mayavi2也可以像matplotlib或gnuplotn那样作为绘图引擎在脚本中使用 ,以及在任何其他应用程序中用于交互式可视化的库。它也可以作为一个正视插件使用,允许它嵌入到其他基于正视的应用程序中。此外,Mayavi2力求成为一个可重用的工具,可以以不同的方式嵌入到库和应用程序中,或者与Envisage应用程序构建框架结合使用,以组装特定于领域的工具。

12.1.2 安装Mayavi

可以使用pip或者conda命令安装mayavi。但是,由于mayavi存在着重要的依赖关系,使得mayavi库的安装不像之前安装numpy,matplotlib等第三方库那样简单。其中两个最重要的依赖关系是:

  • 用户图形交互接口(可以为PyQt4, PySide, PyQt5 或者wxPython) ,在这里我们选择PyQt5作为mayavi用户图形交互接口。

可以通过conda list或者pip list命令来查看当前环境中已经安装的包。如果环境中已经安装相关的依赖包,则可以在接下来的安装中忽略相关安装命令。

使用pip安装

使用pip工具安装mayavi相对来说较为简单,只需要两行命令即可完成安装:

$ pip install mayavi

$ pip install PyQt5

使用conda-forge安装

在安装mayavi之前,我们首先需要添加conda-forge通道:

¥ conda config --add channels conda-forge

有关conda-forge的介绍,请参阅第二章。

接着,进入指定环境后,安装Mayvi的依赖项:

$ conda install vtk

$ conda install pyqt=5

最后,安装mayavi

$ conda install mayavi

测试mayavi安装

安装结束后,运行下列命令来测试mayavi是否被正常安装:

$ mayavi2

mayavi2是mayavi应用程序。mayavi2安装后,将会在conda环境scripts目录下自动创建mayavi2.exe应用程序。笔者的mayavi2应用程序位于C:\Users\Johan\Anaconda3\envs\iexkliu\Scripts\mayavi2.exe。可以双击mayavi2.exe来打开mayavi2应用程序。

12.1.3 Mayavi的用法

Mayavi主要有以下三种使用途径:

  • 完全图形化地使用mayavi2应用程序。有关这方面的更多信息,请参阅第二章Mayavi应用程序部分。

  • 使用Mayavi作为简单Python脚本(例如Ipython)和numpy的绘图引擎。mlab脚本API提供了在批处理脚本中使用Mayavi的简单方法,有关这方面的更多信息,请参见第三章mlab绘图。

  • 用Python编写Mayavi应用程序的脚本。Mayavi应用程序本身具有一个功能强大的通用脚本API,可以使用它来适应您的需要。

    • 您可以在使用mayavi2应用程序时编写Mayavi脚本,以便自动化任务并扩展Mayavi的行为。

    • 您可以从自己的基于Python的应用程序中编写Mayavi脚本。

    • 您可以使用Envisage或其他方法以多种方式将Mayavi嵌入到应用程序中。

关于这一点的更多细节可以在Mayavi的高级脚本一章中找到。

Mayavi嵌入Jupyter Lab

Mayavi库不像matplotlib和seaborn库那样可以在Jupyter Lab中开箱即用。要想在Jupyter Lab中开启对Mayavi支持, 必须得到图形后端的支持。使用不同后端将会得到不一样的输出,Mayavi可以使用“png”,“ipy”和“x3d“作为后端:

”png”后端是最简单的后端,它生成的图像可以嵌入到笔记本中。这些是静态的,而不是交互式的。

“ipy”后端(默认值):”ipy”后端的行为几乎完全像一个普通的Mayavi UI窗口,并支持任何Mayavi/VTK可视化,完全是交互式的。这个后端依赖于VTK的屏幕外支持,取决于您的VTK是如何配置的,可能需要一个窗口系统。这个后端要求安装ipywidgets和ipyevents包:

conda install ipywidgets ipyevents

“x3d”后端:“x3d后端”在笔记本上显示x3d元素。X3D输出生成一个完全交互式的3D场景,但是,这将不支持VTK的交互式小部件。它也不支持透明和其他高级可视化。有关如何与X3D场景交互的信息,请参见:http://www.x3dom.org/documentation/interaction/

需要运行mlab.init_notebook()语句来使用特定的后端:

from mayavi import mlab

mlab.init_notebook('ipy')

另外,Mayavi附带了一些javascript文件,可以安装为:

jupyter nbextension install --py mayavi --user

这将在本地安装x3dom Javascript和CSS文件。注意,在运行上述操作之后,您不需要“启用”扩展或任何东西。、

Last updated