python使用vtk與mayavi三維可視化繪圖

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()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213214.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AS安裝目錄

編輯器: sdk: gradle: gradle使用的jdk目錄:Gradle使用的jdk是android studio安裝目錄下的jbr 成功項目的android studio配置:

H264碼流結構

視頻編碼的碼流結構是指視頻經過編碼之后得到的二進制數據是怎么組織的,或者說,就是編碼后的碼流我們怎么將一幀幀編碼后的圖像數據分離出來,以及在二進制碼流數據中,哪一塊數據是一幀圖像,哪一塊數據是另外一幀圖像。…

C++面試寶典第4題:合并鏈表

題目 有一個鏈表,其節點聲明如下: struct TNode {int nData;struct TNode *pNext;TNode(int x) : nData(x), pNext(NULL) {} }; 現給定兩個按升序排列的單鏈表pA和pB,請編寫一個函數,實現這兩個單鏈表的合并。合并后,…

scheduleatfixedrate詳解

scheduleatfixedrate詳解 大家好,我是免費搭建查券返利機器人賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!在Java開發中,我們常常需要執行定時任務,并且需要保證任務按照一定…

使用Java實現基數排序算法

文章目錄 基數排序算法 基數排序算法 (1)基本思想:將整數按位數切割成不同的數字,然后按每個位數分別比較。 (2)排序過程:將所有待比較數值(正整數)統一為同樣的數位長…

Vuex快速上手

一、Vuex 概述 目標:明確Vuex是什么,應用場景以及優勢 1.是什么 Vuex 是一個 Vue 的 狀態管理工具,狀態就是數據。 大白話:Vuex 是一個插件,可以幫我們管理 Vue 通用的數據 (多組件共享的數據)。例如:購…

VSCode SSH登錄服務器 提示XHR failed

設置->搜索“代理” 把圖中的√去掉 重啟 即可

OVS主線流程

OVS是open virtual switch的簡稱,是現在廣泛使用的軟件實現的虛擬網絡交換機。 各大云廠商普遍使用OVS來實現自身的虛擬網絡,各廠商會根據自身需要加以修改使之符合自身需求,DPU中也使用OVS來實現流表的offload。OVS中的流表基于多級結構&am…

變相增大BatchSize——梯度累積

常規訓練方式 for x,y in train_loader:pred model(x)loss criterion(pred, label)# 反向傳播loss.backward()# 根據新的梯度更新網絡參數optimizer.step()# 清空以往梯度,通過下面反向傳播重新計算梯度optimizer.zero_grad() pytorch每次forward完都會得到一個…

tidb安裝 centos7單機集群

安裝 [rootlocalhost ~]# curl --proto https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh [rootlocalhost ~]# source .bash_profile [rootlocalhost ~]# which tiup [rootlocalhost ~]# tiup playground v6.1.0 --db 2 --pd 3 --kv 3 --host 192.168.1…

按這個套路寫的年底工作總結,運維人能少背多少鍋?

在職場中,年終工作總結是一項重要的任務,不僅有助于回顧過去一年的工作成果,也為未來設定新的目標提供了參考。在進行年終工作總結的過程中,合理的工作匯報是至關重要的一環。 一、匯報需要堅守的4個法則 01.線索必須單一 觀點&am…

js實現元素可拖拽方法

業務需要:Vueelement plus實現對彈框進行拖拽,并可拖拽到顯示頁面的外面,而element提供的拖拽只能在當前頁面不可超出。所以手寫了拖拽方法。 實現效果 對元素進行拖拽 拖拽方法 function dragElement(ele) {ele.addEventListener("mous…

SQL自學通之函數 :對數據的進一步處理

目錄 一、目標 二、匯總函數 COUNT SUM AVG MAX MIN VARIANCE STDDEV 三、日期/時間函數 ADD_MONTHS LAST_DAY MONTHS_BETWEEN NEW_TIME NEXT_DAY SYSDATE 四、數學函數 ABS CEIL 和FLOOR COS、 COSH 、SIN 、SINH、 TAN、 TANH EXP LN and LOG MOD POW…

【SpringBoot教程】SpringBoot 實現前后端分離的跨域訪問(Nginx)

作者簡介:大家好,我是擼代碼的羊駝,前阿里巴巴架構師,現某互聯網公司CTO 聯系v:sulny_ann(17362204968),加我進群,大家一起學習,一起進步,一起對抗…

Mybatis之核心配置文件詳解、默認類型別名、Mybatis獲取參數值的兩種方式

學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統/深入學習某技術知識點… 一個人摸索學習很難堅持,想組團高效學習… 想寫博客但無從下手,急需…

arm-none-eabi-gcc not find

解決辦法:安裝:gcc-arm-none-eabi sudo apt install gcc-arm-none-eabi; 如果上邊解決問題了就不用管了,如果解決不了,加上下面這句試試運氣: $ sudo apt-get install lsb-core看吧方正我是運氣還不錯,感…

leetcode周賽375 - 12 - 10

比賽地址 : 競賽 - 力扣 (LeetCode) t1 : 直接暴力即可 class Solution { public:int countTestedDevices(vector<int>& b) {int n b.size();int ans 0;for(int i0;i<n;i){if(b[i]>0){ans ;for(int ji1;j<n;j){b[j] max(b[j]-1,0);}}}return ans;} };…

SSL 數字證書的一些細節

參考&#xff1a;TLS/SSL 協議詳解(6) SSL 數字證書的一些細節1 證書驗證 地址&#xff1a;https://wonderful.blog.csdn.net/article/details/77867063 參考&#xff1a;TLS/SSL協議詳解 (7) SSL 數字證書的一些細節2 地址&#xff1a;https://wonderful.blog.csdn.net/articl…

Python學習筆記-類

1 定義類 類是函數的集合&#xff0c;class來定義類 pass并沒有實際含義&#xff0c;只是為了代碼能執行通過&#xff0c;不報錯而已&#xff0c;相當于在代碼種占一個位置&#xff0c;后續完善 類是對象的加工廠 2.創建對象 carCar()即是創建對象的過程 3、類的成員 3.1 實例…

福德植保無人機:綠色農業的新篇章

今天&#xff0c;我們榮幸地向您介紹福德植保無人機&#xff0c;一種改變傳統農業種植方式&#xff0c;引領綠色農業的新科技產品。福德植保無人機以其高效、環保、安全的特點&#xff0c;正逐漸成為植保行業的新寵。福德植保無人機是一種搭載了高性能發動機和精確噴灑系統的飛…