python使用vtk与mayavi三维可视化绘图

news2024/12/23 3:41:56

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.coloradmin.cn/o/1304752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三届iEnglish全国ETP大赛16强落位 诠释教育游戏价值

10日,与北方骤降的温度形成鲜明对比,以“玩转英语,用iEnglish”为主题的国内首个教育游戏活动第三届iEnglish全国ETP(English Through Pictures)大赛总决赛小组赛热火朝天的进行。随着“云帆沧海队”搭上末班车,本届活动16强全部产生,接下来的三个周末他们将向年度总冠军发起最…

nuitka Unknown property box-shadow,transition,transform

nuitka 打包后,控制台的错误解决方法 nuitka --standalone --show-memory --show-progress --nofollow-imports --follow-import-toneed --output-dirout --windows-icon-from-ico./static/test.ico mainUI2.py 由于Qt样式表不是CSS,QSS基于CSS2.1&…

百度地图通过DrawingManager.js改造绘制电子围栏,圆形、矩形、多边形、行政区域。( 方式2)

故事:在新项目中,还是需要绘制围栏,由于前面使用的vue-BMap 官方方式进行围栏绘制,虽说比较灵活,但代码量比较大,而且手工敲的代码量太大,因此进行第二中电子围栏的绘制探索。 注意&#xff1a…

traj_dist 笔记 源代码解析(python部分)

1distance.py 1.1 METRIC_DIC 不同实现方法对应的函数路径 1.2 sspd 功能: 计算轨迹 traj_1 和 traj_2 之间的对称化段路径距离。 参数: traj_1:一个二维 numpy 数组,代表第一个轨迹。traj_2:一个二维 numpy 数组…

??题-结构体两个人成绩比较输出分数高的【有问题,可是不知道在那里】

#include<stdio.h>struct stu{long int num;char name[10];double score;}a[2];int main(){ int i;for(i0;i<2;i)scanf("%ld,%s,%lf",&a[i].num,&a[i].name,&a[i].score);if(a[0].score>a[1].score)printf("分数高的学号和姓名是&…

4年外包终上岸,我只能说这类公司能不去就不去......

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是4年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

【后端学前端】第一天 css动画 内凹导航栏

1、学习信息 css动画 内凹导航栏_哔哩哔哩_bilibili 随便找的的视频&#xff0c;主要原因是在公司不方便有声音 2、源码 最终源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title…

多态类对象的大小及虚函数表指针的模拟实现

一、主要目的 1、理解多态类对象存储空间的大小及结构&#xff1b; 2、虚函数表指针的类外显形; 3、多态类对象的大小及虚函数表指针的模拟实现 二、运行原理 1. 创建了两个类&#xff0c;Base和Sub。Base中有一个数据成员a和三个虚函数f1, f2, f3。Sub类继承自Base&#…

为什么企业需要软文营销?媒介盒子告诉你

当下营销环境中&#xff0c;企业常用的营销方式就是软文营销&#xff0c;软文营销为什么会成为企业扩大知名度&#xff0c;提高营销效益的主要手段&#xff1f;企业为什么需要软文营销呢&#xff1f;今天媒介盒子就来和大家好好聊聊。 一、让产品价值可触摸 我们常常有个误区&…

python pip 相关缓存清理(windows+linux)

pip会大量缓存&#xff0c;如果全部堆在系统盘&#xff0c;会造成别的无法使用 windows和linux通用 一、linux linux是在命令行操作 1.查看缓存位置 pip cache dir我这里默认是在/root/.cache/pip 2.查看大小 du -sh /root/.cache/pip结果如下&#xff1a; 3.清理&#…

Win11在Virtualbox上安装ubuntu操作系统

注&#xff1a;原创笔记&#xff0c;以下图片水印为本人 相关工具展示 第四个&#xff1a;ubuntu的vmdk文件&#xff0c;用于配置虚拟机 第5/6个&#xff1a;virtualbox安装包 一、安装 VirtualBox 由于win11版本问题&#xff0c;如果装不了 virtualBox需要在官网安装最新版…

科技与艺术相结合,虚拟人裸眼3D动画亮相城市商圈

随着元宇宙概念的火爆&#xff0c;虚拟制作技术的快速发展&#xff0c;虚拟人可以将虚拟世界与现实世界相结合&#xff0c;为用户带来沉浸式体验。如虚拟人壬子希以裸眼3D动画的形式亮相城市商圈&#xff0c;助力文旅以科技与艺术相结合的形式&#xff0c;展现城市文化与科技成…

【Linux】tmux简单使用

它允许你在一个终端窗口中创建多个终端会话&#xff0c;并在它们之间进行切换。以下是tmux的一些主要用途和功能&#xff1a; 多窗口&#xff1a; Tmux允许你在一个终端中创建多个窗口。每个窗口可以包含一个或多个终端会话&#xff0c;你可以轻松地在这些窗口之间切换。面板分…

「红队笔记」靶机精讲:Prime1 - 信息收集和分析能力的试炼

「红队笔记」靶机精讲&#xff1a;Prime1 - 信息收集和分析能力的试炼 本文是作者在观看 B 站《红队笔记》后做的一些笔记及相关知识的补充。学渗透特别推荐大家去看。如有侵权&#xff0c;请联系作者&#xff0c;作者看到后会第一时间删除。 靶机精讲之Prime1&#xff0c;vu…

【数据结构与算法】JavaScript实现图结构

文章目录 一、图论1.1.图的简介1.2.图的表示邻接矩阵邻接表 二、封装图结构2.1.添加字典类和队列类2.2.创建图类2.3.添加顶点与边2.4.转换为字符串输出2.5.图的遍历广度优先搜索深度优先搜索 2.6.完整实现 一、图论 1.1.图的简介 什么是图&#xff1f; 图结构是一种与树结构…

适合无线通信设备应用 TSS-53LNB+、TSS-53LNB3+、TSS-183A+、TSS-13LN+、TSS-23LN+低噪声、增益放大器【RF】

1、TSS-53LNB 射频放大器 IC 通用 500MHz 至5GHz&#xff0c;12MCLP TSS-53LNB&#xff08;符合RoHS标准&#xff09;是一款先进的超平坦增益低噪声宽带放大器&#xff0c;采用E-PHEMT技术制造&#xff0c;在宽频率范围内提供极高的动态范围。它集成了开关&#xff0c;使用户能…

Maxscript入门教程:Print与Format命令

本文对Maxscript中的“Print”和“Format”命令之间的差异进行了一些小小的研究&#xff0c;得出的结论主要的差异是它们的结果中的引号“”。 “Print”很简单&#xff0c;直接使用&#xff0c;在调试时非常有用。为了工作&#xff0c;它只需要一个字符串&#xff08;这是两个…

北斗卫星开启高效应急救援新篇章

北斗卫星开启高效应急救援新篇章 在现代社会&#xff0c;灾害频发给人类带来了巨大的生命和财产损失&#xff0c;高效的应急救援能力对提升抗灾拯救生命具有举足轻重的作用。作为中国自主研发的全球卫星导航系统&#xff0c;北斗卫星系统已逐渐发展成为全球应急救援的重要力量&…

数据库(一)| 数据库概述、基本概念、关系型数据库特点、超键候选码等

文章目录 1 数据库的一些基础概念1.1 数据库和数据库管理系统1.2 关系模式和关系实例1.3 数据库模式和数据库实例 2 数据库组织形式2.1 数据采用文件的缺点2.2 使用数据库管理系统的 优点 3 关系型数据库特点4 三个层次的数据抽象Data Abstraction5 超键、候选码、主码、外码 1…

LeetCode-654. 最大二叉树【栈 树 数组 分治 二叉树 单调栈】

LeetCode-654. 最大二叉树【栈 树 数组 分治 二叉树 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;递归&#xff0c;这个问题的难点在于如何找到每个子数组的最大值。此处用的是暴力查找最大值&#xff0c;然后递归构建左右子树。解题思路二&#xff1a;单调栈&#xf…