2009年2月23日星期一

Mayavi2 用户手册1 概览


这个帖子说明有朋友在寻找Mayavi的信息时访问了本园子,现在就贴一篇关于Mayavi2的介绍,希望他们能再次光临。

内容来自Mayavi2的中文文档项目。去年10月底就建立了此项目,由于时间比较紧,进展极其缓慢。Mayavi2的文档采用reStructuredText格式(本篇文档的源文件在这里),使用Sphinx将rst文件及图片等转换为完整的文档网站。帖子中没有给出的链接,正是指向其它文档页面。我会陆续贴上来。也欢迎感兴趣的朋友加入

章节摘要

本章简要介绍什么是 Mayavi,并告诉你在这本手册的什么地方可以找到与你的情况相关的信息。

简介

Mayavi2 致力于简便的3D数据可视化功能。主要通过下列方式实现:

  • 可选的富用户界面,包括可与可视化中的所有数据和对象交互的对话框。

  • 简洁的 Python 脚本界面,包括即用型3D可视化功能,与 Matlab 或 matplotlib (使用 mlab ), 或面向对象的编程界面。

  • 不需要 VTK 即可使用其强大功能。

另外,Mayavi2 努力成为可重用的工具,即以各种方式嵌入你的库程序或应用软件里,或与 Envisage 应用程序创建框架(application-building framework)共同组建特定领域的工具。

Mayavi2 是什么?

Mayavi2 是一个通用的、跨平台 3D 科学数据可视化工具。其特点如下:

  • 标量、向量、张量的 2D 和 3D 的可视化。

  • 可方便地使用Python编写脚本。

  • 可方便地修改源代码,模块和数据过滤器进行扩展。

  • 可读入多种数据格式:VTK (legacy 和 XML), PLOT3D 等。

  • 保存可视化操作。

  • 以多种图形格式保存渲染的可视化结果。

  • 通过 mlab 为快速科学绘图提供方便的功能。 (参考 simple-scripting-with-mlab).

不像它的前身 Mayavi1,Mayavi2 重新设计为具有脚步和可扩展功能。Mayavi2 提供 ``mayavi2``应用程序,其本身可独立使用。而且,Mayavi2 可以像 matplotlib 或 gnuplot 那样在脚本中用作绘图引擎,就像其它应用程序中用作交互可视化的库程序。它也可以用作 Envisage 的插件,天然地嵌入基于 Envisage 的应用程序中。

技术细节

Mayavi2 提供通用的可视化引擎,像VTK那样基于管道架构。Mayavi2 也提供 Envisage 插件,用于2D/3D科学数据可视化。Mayavi2 使用 Enthought 工具包(ETS),如 Traits, TVTK 和 Envisage_,下面是它的一部分特点:

  • Pythonic API 利用了 Traits 的所有优势。

  • Mayavi 可以天然地、透明地与 numpy 矩阵一起使用。(得益于 TVTK 的使用)

  • 由于使用了 MVC 设计,比 Mayavi-1 更容易编写脚本。

  • 方便地通过加入资源、组件、模块和数据过滤器进行扩展。

  • 提供 Envisage 插件,这意味着:

    • 在 Mayavi 中很容易地使用其他 Envisage 插件。例如,Mayavi 提供嵌入的 Python 命令行解释器。这是一个 Envisage 插件,在 Mayavi 中只需要一行代码。

    • 在基于 Envisage 的应用程序中容易地使用 Mayavi。因此所有基于 Envisage 的应用程序可以轻松使用 Mayavi 插件,编写脚本以可视化数据。

  • 基于 wxPython/Qt4 的 GUI(得益于 Traits,PyFace 和 Envisage). 很重要的一点是 Mayavi 的源程序中没有直接使用 wxPython 或 Qt4。

  • 非侵入式、重用型设计。不用基于 wxPython 或 Qt4 的图形界面,也可以使用 Mayavi。

Note

下面所有章节均假设你已经有工作正常的 Mayavi 。下载和安装 Mayavi,请参考下一章 installation.

将 Mayavi 作为独立程序或库程序?

用户主要有三种方法使用 Mayavi :

  1. 图形方式使用 mayavi2 应用程序.更多相关信息请参考 :ref:using-the-mayavi-application`。

  2. 在简单的 Python 脚本中用作绘图引擎. 脚本 API mlab 提供了在批处理脚本中使用 Mayavi 的简单方式,更多相关 信息请参考 :ref:`simple-scripting-with-mlab`。

  3. 在 Python 中编写 Mayavi 应用脚本。Mayavi 应用程序本身提供了强大的 通用脚本 API,可以适应你的需求。

    1. 可在使用 mayavi2 应用程序时编写脚本自动完成任务及扩展 Mayavi。

    2. 可在自己的基于 Python 的应用中编写 Mayavi 脚本。

    3. 可使用 Envisage 或其他各种方式将 Mayavi 嵌入你的应用中。

    更多详细信息请参考 :ref:`advanced-scripting-with-mayavi`。

场景(Scenes)、数据源和可视化模块:管道模块

Mayavi 使用类似 VTK 的管道(pipeline)结构。对用户而言,可以简化为如下层次。

  • 数据被载入 Mayavi 后存储在数据源中(使用文件或由脚本产生)。可以打开任意多个数据文件或数据对象。数据源是富对象,描述了数据但没有指定如何可视化。

  • 这些数据可以使用过滤器处理(可选),使用可视化模块进行可视化操作。这些过滤器和模块可以通过用户界面的 `Visualize 菜单项或上下文菜单访问到,或在编写 Mayavi 脚本将其实例化为 Python 对象。

    区别数据源、数据容器和可视化工具的原因是由于有很多不同的查看数据方式。例如下面的图片都是相同数据通过应用不同的模块而获得的。



  • 所有对象属于一个 场景 -- 这是 3D 可视化中的一片区域。在交互应用程序中,新的场景可以通过使用菜单 File->New->VTK Scene 来创建。

将数据载入 Mayavi

Mayavi 是一个科学数据可视化工具。准备数据的主要方式有两个:

  1. 将数据存入其所支持的数据文件格式,例如 VTK legacy 或 VTK XML 文件等。更多关于 VTK 的信息请参考 VTK 文件格式 VTK file formats。这些文件在交互应用程序中可以通过菜单载入。

  2. 通过 numpy 数组或其它序列产生 TVTK 数据集(dataset)。最容易的方式是使用脚本API, 例如 `mlab`。 (参看这一段 creating data sources with mlab ,或者 3D 绘图函数: mlab_plotting_functions).

另外,如果你希望通过建立 VTK 数据结构或文件以获得更深入的理解,请参考此章节关于数据集的一般信息 data-structures-used-by-mayavi。

没有评论:

发表评论


相关文章

Widget by Hoctro