您的位置:

Python MayaVi 模块

我们都可能听说过图形用户界面,也就是所谓的图形用户界面,我们一定在许多应用不断变化的界面中看到了它的影响。基本上,图形用户界面是应用和软件的一种用户界面,它取代了基于文本的用户界面和键入的命令标签,允许用户与计算机、智能手机、个人电脑等进行交互。,通过音频指示器和图形图标,如符号等。图形用户界面以这样一种方式显示对象和数据,即我们试图显示的信息通过提供的交互式用户界面非常容易地传达。每当用户与应用交互时,电子设备上显示的对象会改变其颜色、文本,有时还会改变其形状。因此,它使得用户与电子设备或应用的交互对于用户来说变得更加交互和有趣。

我们可以看到图形用户界面在当今世界变得多么重要,我们可以在日常生活中使用的几乎每个应用中找到它的用途。因此,我们应该知道如何构建一个图形用户界面并使用它变得更加重要。大多数编程语言都为我们提供了在内置库或扩展的帮助下创建交互式图形用户界面的选项。但是 Python 是所有这些用于创建图形用户界面的编程语言中最受欢迎的选择之一,因为它为我们提供了多个库,通过这些库我们可以轻松地创建图形用户界面。在 Python 中,我们有许多内置模块和一些可安装模块,我们可以通过在程序中使用这些模块的功能来创建交互式图形用户界面。一个这样的 Python 模块是 MayaVi 模块,我们将在本教程中学习它。在本教程中,我们将了解 MayaVi 教程、如何安装它、它的功能以及更多关于它的信息。

Python 中的 MayaVi 模块

MayaVi 是一个用于可视化科学数据的 Python 模块,它使用 VTK 来可视化数据。除此之外,MayaVi 模块还提供了借助 Tkinter 库开发 GUI 的选项。目前在 BSD 许可下免费发行的 MayaVi 模块是由 Prabhu Ramchandran 开发的,它的发音为一个名字“Ma-ya-vee”,在英语中代表“神奇”。MayaVi 是一个跨平台的 Python 模块(运行在几乎所有平台上,如 UNIX、Windows 或 Mac OS X),它运行在几乎所有 VTK 和 Python 都可用的平台或操作系统上。MayaVi 模块的最新版本 MayaVi2 与最初的版本有很大的不同,因为最新版本是 Entworn 套件的一个组件,Entworn 套件是科学 Python 程序的套件。使最新版本的 MayaVi 模块不同于原始版本的另一个原因是,它通过 Python 程序为 3D 绘图提供了一个可重用的组件,并且不仅仅专注于交互式程序(以前版本中缺乏的功能)。尽管最新版本的 MayaVi 模块的界面和 API 与上一版本略有不同,但它有许多新功能,而这些功能在上一版本中是缺失的。

Python 中的 MayaVi 模块:视觉

开发 MayaVi 模块时,开发的愿景是提供科学和其他数据的交互式可视化,但这不是开发 MayaVi 模块的唯一目的。在 MayaVi 模块的开发背后还有一些其他的愿景,我们将在这一节中研究 MayaVi 模块开发背后的所有这些愿景。

下面是构建 Python MayaVi 模块的愿景:

  • 需要一个可重用的工具,我们可以嵌入到我们的应用中,为数据绘制多个三维图
  • MayaVi 还寻求提供科学和其他数据以及多种应用的交互式和简单的可视化
  • 利用 VTK 图书馆的力量没有它,我们不得不去了解它
  • 开发 MayaVi 也是为了提供一个丰富的用户界面(主要集中在 GUI 上),其中有对话框,通过可视化的方式与所有对象和数据进行交互
  • MayaVi 与设想的应用构建框架相结合,这样我们就可以在一个地方组装和访问所有特定于领域的工具
  • 除此之外,Python 中需要一个干净简单的脚本接口,包括面向对象编程、a-la mlab 和一行程序接口,这导致了 MayaVi 模块的开发

这些都是主要原因,或者说我们可以看到开发 MayaVi 模块背后的愿景。

Python 中的 MayaVi 模块:一般特征和特性

正如我们在 MayaVi 模块的介绍部分所看到的,该模块为我们提供了多种功能,可以非常轻松地可视化科学数据。但这并不是 MayaVi 模块的唯一特点,这使得它在所有的科学数据可视化模块中脱颖而出。它还具有一些其他特性,使本模块在短时间内非常受欢迎,我们将在本节中讨论本模块的这些特性和功能。以下是 MayaVi 模块的一般特征和突出显示的功能:

  • MayaVi 模块是通过 mlab 进行科学绘图和数据可视化的非常方便的选项(也可通过 MayaVi 扩展获得)
  • MayaVi 模块对阅读几种文件格式非常有帮助,比如 PLOT3D、VTK (XML 和 Legacy)等等
  • MayaVi 模块是一个跨平台的 Python 模块,我们可以在多个操作系统(OS)中轻松使用这些模块
  • 使用 Python 很容易编写 mayavi 模块的脚本
  • MayaVi 模块可以保存多种图像格式的渲染可视化数据,方便用户使用
  • 我们可以从 Python 解释器中编写 Mayavi 模块的脚本,或者将其作为 Python 模块导入程序中
  • 它提供管道浏览器并作为管道浏览器工作,通过该浏览器可以浏览和编辑 VTK 管道中存在的对象
  • MayaVi 模块的可扩展性非常简单和容易,这意味着我们可以通过各种自定义源、文件格式、数据过滤器和模块来扩展 MayaVi 模块
  • 使用 Mayavi 模块,张量(二维和三维)、向量或标量数据的可视化是可能的,并且非常容易
  • 借助 Mayavi 模块,我们可以导入简单的 3D 工作室和 VRML 场景

以上是 MayaVi 模块的一些一般特征和突出的特性,当我们浏览这个列表时,我们会发现为什么这个 MayaVi 模块在短时间内变得如此受欢迎。除了上面列出的功能之外,MayaVi 模块还可以使用其最新版本的 Mayavi2 作为任何应用和数据的可视化引擎。

Python 中的 MayaVi 模块:函数

MayaVi 库用于执行科学数据可视化、开发图形用户界面、开发二维和三维图形等多种功能。,方法是在 Python 程序中导入该模块。我们可以在 Mayavi 模块的帮助下或者在程序中一起使用 MayaVi 和一些其他模块来执行所有这些功能,但是对于本教程,我们将只学习使用 MayaVi 模块构建图形用户界面。我们将使用 MayaVi 模块和其他一些模块(我们将在后面讨论)通过 Python 程序构建一个图形用户界面。

Python 中的 MayaVi 模块:安装

MayaVi 不是预装 Python 扩展的 Python 内置模块,因此,如果我们想在 Python 程序中使用和导入这个模块,我们必须在系统中安装这个模块。MayaVi 模块的安装非常简单,可以通过多种方法完成,包括通过 conda 方法、通过 Jupyter 笔记本方法、通过 pip 方法等等。但是在本教程中,我们将只使用 pip installer 方法来执行 MayaVi 模块的安装,并通过在终端 Shell 中使用以下 pip 命令来安装该模块:


pip install mayavi

我们要打开我们系统的命令提示终端,在里面写上面给出的命令,写完命令后,按回车键,开始 MayaVi 模块的安装过程。当我们按回车键时,MayaVi 模块的安装过程将开始,并且需要一段时间才能在我们的系统中成功安装 MayaVi 模块。因为 Mayavi 模块自带了多个扩展和库函数,我们的系统中会下载安装这些扩展和库函数,pip 也会为其搭建一个轮子。

如我们所见,MayaVi 模块已经成功安装在我们的系统中,现在我们可以通过将其导入 Python 程序来开始使用该模块。

注意:由于在本教程中我们必须用 MayaVi 模块构建一个 GUI,我们还需要 NumPy 和 SciPy 模块来执行这个实现。在继续 MayaVi 模块的实现部分之前,我们应该确保 SciPy 和 NumPy 模块都已经安装在我们的系统中。如果我们的系统中没有 SciPy 和 NumPy 模块,我们可以使用命令提示符终端中的以下 pip installer 命令在我们的系统中安装它们:

(i)安装 SciPy 模块:


pip install scipy

这个模块已经存在于我们的系统中,这就是为什么它在这里显示需求已经满足,如果这个模块不存在于系统中,这个命令将安装它。

(ii)用于安装 NumPy 模块:


pip install numpy

这个模块已经存在于我们的系统中,这就是为什么它在这里显示需求已经被满足。

我们已经为 MayaVi 模块的实现部分安装了所有必需的模块,因此,现在我们可以继续它的实现部分。

Python 中的 MayaVi 模块:实现

在实现部分,我们将只使用 MayaVi 模块实现其 GUI 构建功能,我们将通过它构建一个球面调和函数可视化。我们将在示例程序中使用 MayaVi 模块,通过在输出中为球谐函数绘制图形用户界面来理解球谐函数的可视化。我们还将使用 SciPy 和 NumPy 模块进行科学计算,并在程序中使用三角函数。我们可以看看下面的示例程序,它用 NumPy 和 SciPy 模块实现了 MayaVi 模块。

示例:

看看下面这个可视化球形函数的 Python 程序:


# Import multiple functions from numpy
from numpy import linspace, meshgrid, array, sin, cos, pi, abs
# Import sph_harm from scipy
from scipy.special import sph_harm as sh
# Import mlab from MayaVi
from mayavi import mlab as ml
# Defining 1-D angles from pi values
oneDTheta = linspace(0,  pi,  91) 
oneDPhi   = linspace(0, 2*pi, 181)
# Defining 2-D angles from 1-D angle values
twoDTheta, twoDPhi = meshgrid(oneDTheta, oneDPhi)
# Using trigonometry values for spheres with 2-D angles
xyzTwoD = array([sin(twoDTheta) * sin(twoDPhi),
                sin(twoDTheta) * cos(twoDPhi),
                cos(twoDTheta)]) 
# Defining length and measurement variable values
length = 3
measurement = 0
# Using sph_harm() function with multiple variables
yVarLM = sh(measurement, length, twoDPhi, twoDTheta)
# Defining radius for spherical structure
radius = abs(yVarLM.real) * xyzTwoD
# Size of the figure
ml.figure(size=(700, 830))
# Radius for the figure with colour
ml.mesh(radius[0], radius[1], radius[2], scalars = yVarLM.real, colormap = "cool")
# Dimensions for the figure
ml.view(azimuth = 0, elevation = 75, distance = 2.4, roll = -50)
# Saving figure as image
ml.savefig("Y_%i_%i.jpg" % (length, measurement))
# Showing figure in output
ml.show()

输出:

如我们所见,球面谐波的可视化以指定的尺寸、值和特征绘制在输出中。

说明:

我们首先在程序中导入了 scipy、numpy 和 mayavi 模块。首先,我们从 numpy 模块中导入了 linspace、meshgrid、array、sin、cos、pi 和 abs 函数,然后从 scipy 模块中导入了 sph_harm 函数作为 sh,最后,我们从 mayavi 模块中导入了 mlab 作为 ml,用于球面调和运动的可视化。

之后,我们在 OneDTheta 和 OneDPhi 变量中使用 linspace()函数定义了一维角度。之后,我们在 meshgrid()函数中使用 OneDTheta & OneDPhi 角度定义了二维角度,并初始化了两个 Theta 和两个 DPhi 变量。

之后,我们定义了一个数组,在数组内部,我们使用了前面定义的二维角度的 sin 和 cos 恒等式。接下来,我们用整数值定义长度和测量变量,然后在 sph_harm()函数中使用二维角度、长度和测量值。

之后,我们使用 abs()函数初始化半径变量来定义球体的半径。接下来,我们使用图()函数来定义图的尺寸,之后,我们使用 mesh()函数来为输出中绘制的图指定半径和颜色。

然后,我们使用 view()函数设置球谐函数的可视化,并使用 savefig()以指定的格式保存图形。最后,我们使用 show()函数在输出中显示可视化。