Python MayaVi模块

Python MayaVi模块

我们都可能听说过图形用户界面(GUI),并且我们必须见识过它在许多应用程序界面中的影响。基本上,GUI或图形用户界面是一种应用程序和软件的用户界面类型,它可以通过语音指示器和图形图标(例如符号等)与计算机、智能手机、个人电脑等进行交互,而不是基于文本的用户界面和键入的命令标签。GUI以一种使我们尝试展示的信息非常容易地通过提供的交互式用户界面传达出来的方式来显示对象和数据。每当用户与应用程序进行交互时,显示在电子设备上的对象会改变其颜色、文本,有时甚至形状也会改变。因此,它使用户与电子设备或应用程序的交互对于用户变得更加互动和有趣。

我们可以看到GUI在今天的世界中变得多么重要,我们几乎可以在我们日常生活中使用的每个应用程序中找到它的用途。因此,更加重要的是,我们应该知道如何构建GUI并与之一起工作。大多数编程语言都为我们提供了使用其内置库或与其相关的扩展创建交互式GUI的选项。但是,Python是所有这些编程语言中最受欢迎的选择之一,因为它通过多个库为我们提供了创建GUI的方式。在Python中,我们有许多内置模块和一些可安装的模块,我们可以通过在程序中使用这些模块的函数来创建交互式GUI。 MayaVi模块就是其中一个Python模块,我们将在本教程中学习有关MayaVi教程的知识,我们将学习如何安装它,它的功能以及有关它的更多信息。

Python中的MayaVi模块

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

Python中的MayaVi模块:目标

开发MayaVi模块时,它的目标是提供科学和其他数据的交互式可视化,但这并不是开发MayaVi模块的唯一目的。在本节中,我们将看一下MayaVi模块开发背后的所有目标。

以下是构建Python MayaVi模块的目标:

  • 为多个3D数据绘图在我们的应用程序中嵌入可复用工具的需求
  • MayaVi还旨在提供科学和其他数据的交互式和易于可视化的方式,以及多个应用程序
  • 利用VTK库的强大功能,否则我们将被迫学习它
  • MayaVi还被开发为提供丰富的用户界面(主要集中在GUI上),其中包含与所有对象和数据的可视化互动的对话框
  • 将MayaVi与设想中的应用程序构建框架相结合,以便我们可以在一个地方组装和访问所有的特定领域工具
  • 除此之外,对于Python中一个干净简单的脚本接口的需求,其中包括面向对象编程(类似于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模块,可以轻松可视化张量(2D和3D)、矢量或标量数据
  • 使用Mayavi模块,可以导入简单的3D工作室和VRML场景

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

Python中的MayaVi模块:函数

MayaVi库用于执行多种功能,如科学数据可视化、开发图形用户界面、开发2D和3D图形等,通过在Python程序中导入此模块。我们可以通过MayaVi模块或在程序中同时使用Mayavi和其他模块来执行所有这些功能,但是在本教程中,我们将只学习使用MayaVi模块构建图形用户界面。我们将使用MayaVi模块和其他一些模块(稍后将讨论)通过Python程序构建GUI。

Python中的MayaVi模块:安装

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

pip install mayavi

我们需要打开命令提示符终端,并将上面给出的命令写入其中。在写入命令后,按下回车键开始安装MayaVi模块的过程。当我们按下回车键时,MayaVi模块的安装过程将开始,并且在我们的系统中成功安装MayaVi模块需要一些时间。因为Mayavi模块附带了多个扩展和库函数,这些将与MayaVi模块一起下载和安装到我们的系统中,pip还将为其构建一个wheel。

Python MayaVi模块

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

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

(i) 安装SciPy模块:

pip install scipy

Python MayaVi模块

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

(ii) 安装NumPy模块:

pip install numpy

Python MayaVi模块

该模块已经在我们的系统中存在,这就是为什么在这里显示已满足要求。

我们已经安装了实施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()

输出:

Python MayaVi模块

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

解释:

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

然后,我们使用linspace()函数定义了1-D角度,并将其分别赋值给OneDTheta和OneDPhi变量。之后,我们使用OneDTheta和OneDPhi角度在meshgrid()函数中定义了2-D角度,并初始化了TwoDTheta和TwoDPhi变量。

然后,我们定义了一个数组,并在数组内部使用了之前定义的2-D角度与sin和cos的恒等式。接下来,我们使用2-D角度、长度和测量值在sph_harm()函数中进行计算。

然后,我们使用abs()函数来定义球体的半径,并使用figure()函数来定义图形的尺寸,然后使用mesh()函数来指定图形绘制输出的半径和颜色。

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程