VTK(Visualization Toolkit)是3D計算機圖形學、圖像處理和可視化的強大工具。它可以通過Python綁定使用,適合于科學數據的復雜可視化。Mayavi 依賴于 VTK (Visualization Toolkit),一個用于 3D 計算機圖形、圖像處理和可視化的強大庫。
安裝
pip install mayavi
pip install vtk
示例代碼
- vtk畫圓錐
import vtk# 創建一個錐體
cone = vtk.vtkConeSource()
cone.SetHeight(3.0)
cone.SetRadius(1.0)
cone.SetResolution(10)# 創建映射器 Mapper
coneMapper = vtk.vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())# 創建演員 Actor
coneActor = vtk.vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(0.2, 0.63, 0.79)
coneActor.GetProperty().SetSpecular(0.5)
coneActor.GetProperty().SetSpecularPower(30)# 創建渲染器 Renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(coneActor)
renderer.SetBackground(0.1, 0.2, 0.4)# 創建渲染窗口 RenderWindow
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindow.SetSize(800, 600)# 創建渲染窗口交互器 RenderWindowInteractor
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)# 初始化過程并開始渲染和交互
renderWindow.Render()
renderWindowInteractor.Initialize()
renderWindowInteractor.Start()
- mayavi畫3D曲線
from mayavi import mlab
import numpy as np# Creating data for a 3D parametric curve (a helix)
t = np.linspace(0, 4 * np.pi, 100)
x = np.sin(t)
y = np.cos(t)
z = t# Plotting the parametric curve
mlab.figure(bgcolor=(1, 1, 1), size=(400, 300))
mlab.plot3d(x, y, z, t, tube_radius=0.1, colormap='Spectral')# Display the figure
mlab.show()
- mayavi可視化.mat數據
from mayavi import mlab
import scipy.io
import numpy as np# 加載.mat文件
mat_data = scipy.io.loadmat('a.mat') # 替換為您的.mat文件的路徑
data = mat_data['a']data_magnitude = np.abs(data )# 創建一個新的Mayavi場景
mlab.figure(bgcolor=(1, 1, 1), size=(800, 600))# 繪制聲場的幅度
src = mlab.pipeline.scalar_field(data )# 使用 volume 渲染來顯示聲場數據的內部結構
volume = mlab.pipeline.volume(src)
volume.module_manager.scalar_lut_manager.lut_mode = 'jet' # 設置顏色映射 - 'jet'# 調整顏色映射范圍
volume.module_manager.scalar_lut_manager.use_default_range = False
volume.module_manager.scalar_lut_manager.data_range = [data.min(), data.max()]# 獲取顏色查找表
lut = volume.module_manager.scalar_lut_manager.lut.table.to_array()# 修改查找表中的透明度通道,增加最大值的透明度
lut[:, -1] = np.linspace(0, 255, lut.shape[0]) # 調整透明度漸變# 更新查找表
volume.module_manager.scalar_lut_manager.lut.table = lut# 顯示場景
mlab.show()