我們都可能聽說過圖形用戶界面,也就是所謂的圖形用戶界面,我們一定在許多應用不斷變化的界面中看到了它的影響。基本上,圖形用戶界面是應用和軟件的一種用戶界面,它取代了基於文本的用戶界面和鍵入的命令標籤,允許用戶與計算機、智能手機、個人電腦等進行交互。,通過音頻指示器和圖形圖標,如符號等。圖形用戶界面以這樣一種方式顯示對象和數據,即我們試圖顯示的信息通過提供的交互式用戶界面非常容易地傳達。每當用戶與應用交互時,電子設備上顯示的對象會改變其顏色、文本,有時還會改變其形狀。因此,它使得用戶與電子設備或應用的交互對於用戶來說變得更加交互和有趣。
我們可以看到圖形用戶界面在當今世界變得多麼重要,我們可以在日常生活中使用的幾乎每個應用中找到它的用途。因此,我們應該知道如何構建一個圖形用戶界面並使用它變得更加重要。大多數編程語言都為我們提供了在內置庫或擴展的幫助下創建交互式圖形用戶界面的選項。但是 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()函數在輸出中顯示可視化。
原創文章,作者:YLFFB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/329867.html