科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)
Mlab了解
- Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化。
过程为:
- .建立数据源
- .使用Filter(可选)对数据进行加工
- .添加可视化模块,我们可以通过修改可视化模块的属性,来修改可视化场景
mgrid和ogrid区别
一:基于Numpy数组的绘图函数
(一)3D绘图函数--Point3d(点图像0维)
- 这里我们可以看到Point3D参数的描述,是对vtk对象的整体描述,因为Mayavi是对VTK的整体封装,因此Mayavi建立的对象也就是VTK的对象
- import numpy as np
- from mayavi import mlab
- #建立数据
- t = np.linspace(,*np.pi,) #linspace根据起止数据等间距填充数据,分为20组,所以下面将产生20个点
- x = np.sin(*t)
- y = np.cos(t)
- z = np.cos(*t)
- s = + np.sin(t)
- #对数据进行可视化
- points = mlab.points3d(x,y,z,s,colormap="Reds",scale_factor=.)
- mlab.show()
- mlab.points3d(x,y,z,s,colormap="Reds",scale_factor=.) #x,y,z表示Numpy数组,列表或者其他形式的点三维坐标,s表示在该点处的标量值,scale_factor放缩比例
- 这里:标量值越大,点的尺寸越大,颜色越红
- points = mlab.points3d(x,y,z,s,colormap="Greens",scale_factor=.)
- Mayavi.mlab.show建立了简单的GUI,并开始了事件循环,stop用来定义GUI的事件循环是否结束
(二)3D绘图函数--plot3d(线图形一维)
- import numpy as np
- from mayavi import mlab #引入mlab库
- #建立数据
- n_mer,n_long = ,
- dphi = np.pi / 1000.0
- phi = np.arange(0.0,*np.pi+0.5*dphi,dphi)
- mu = phi * n_mer
- x = np.cos(mu)*(+np.cos(n_long*mu/n_mer)*0.5)
- y = np.sin(mu)*(+np.cos(n_long*mu/n_mer)*0.5)
- z = np.sin(n_long*mu/n_mer)*0.5
- #对数据进行可视化
- l = mlab.plot3d(x,y,z,np.sin(mu),tube_radius=0.025,colormap="Spectral")
- mlab.show()
(三)3D绘图函数--2D数据(二维)
(1)imshow方法
- import numpy as np
- from mayavi import mlab
- #建立数据
- s = np.random.random((,)) #二维数据
- #对数据进行可视化
- img = mlab.imshow(s,colormap="gist_earth") #gist_earth以地球表面的色彩为颜色的颜色映射关系
- mlab.show()
(2)surf方法
- s:二维数组第一列表示x轴位置,第二列表示y轴位置,x,y可以是一维或者二维数组,一般情况下,他们都由numpy的mgrid或ogrid得到
- import numpy as np
- from mayavi import mlab
- def f(x,y):
- return np.sin(x-y)+np.cos(x+y)
- x,y = np.mgrid[-.:7.05:0.1,-.:5.05:0.05]
- s = mlab.surf(x,y,f)
- mlab.show()
- mgrid返回两个二维数组(个数是不固定的,我们放置几个元素,就会生成几个二维数组)
- -.:7.05:0.1---->最小-,最大7.,步长为0.1依次生成一个n*n矩阵
- >>> x,y = np.mgrid[-.:7.05:0.1,-.:5.05:0.05]
- >>> x
- array([[-. , -. , -. , ..., -. , -. , -. ],
- [-6.9, -6.9, -6.9, ..., -6.9, -6.9, -6.9],
- [-6.8, -6.8, -6.8, ..., -6.8, -6.8, -6.8],
- ...,
- [ 6.8, 6.8, 6.8, ..., 6.8, 6.8, 6.8],
- [ 6.9, 6.9, 6.9, ..., 6.9, 6.9, 6.9],
- [ . , . , . , ..., . , . , . ]])
- >>> y
- array([[-. , -4.95, -4.9 , ..., 4.9 , 4.95, . ],
- [-. , -4.95, -4.9 , ..., 4.9 , 4.95, . ],
- [-. , -4.95, -4.9 , ..., 4.9 , 4.95, . ],
- ...,
- [-. , -4.95, -4.9 , ..., 4.9 , 4.95, . ],
- [-. , -4.95, -4.9 , ..., 4.9 , 4.95, . ],
- [-. , -4.95, -4.9 , ..., 4.9 , 4.95, . ]])
(3)contour_surf() 与surf()类似,单求解的是等值线,surf求解的是曲面
- import numpy as np
- from mayavi import mlab
- def f(x,y):
- return np.sin(x-y)+np.cos(x+y)
- x,y = np.mgrid[-.:7.05:0.1,-.:5.05:0.05]
- s = mlab.contour_surf(x,y,f)
- mlab.show()
(四)3D绘图函数--3D数据(三维)
(1)contour3d方法
- import numpy as np
- from mayavi import mlab
- x,y,z = np.ogrid[-::64j,-::64j,-::64j] #64j表示数组长度为64
- scalars = x*x + y*y +z*z
- obj = mlab.contour3d(scalars,contours=,transparent=True) #contours八个等值面 transparent该对象可以透明表示,可以查看内部
- mlab.show()
- ogrid返回3个三维数组(几个是不固定的,我们设置了几个元素,就生成相对应个三维数组)
- >>> x,y,z = np.ogrid[-::64j,-::64j,-::64j]
- >>> x
- array([[[-. ]], #共64个元素
- [[-4.84126984]],
- [[-4.68253968]],
- .......
- [[ 4.68253968]],
- [[ 4.84126984]],
- [[ . ]]])
(2)quiver3d()方法
(x,y,z表示箭头位置,二维即可,不需要三维表示)
- import numpy as np
from mayavi import mlab- x,y,z = np.mgrid[-2:3,-2:3,-2:3]
r = np.sqrt(x**2 + y**2 + z**4)
u = y*np.sin(r)/(r+0.001)
v = -x*np.sin(r)/(r+0.001)
w = np.zeros_like(z)- obj = mlab.quiver3d(x,y,z,u,v,w,line_width=3,scale_factor=1)
mlab.show()
科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)的更多相关文章
- 科学计算三维可视化---Mlab基础(鼠标选取交互操作)
一:鼠标选取介绍 二:选取红色小球分析 相关方法:科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数) 1.小球场景初始化建立 import numpy as np from maya ...
- 科学计算三维可视化---Mlab基础(数据可视化)
推文:科学计算三维可视化---TVTK库可视化实例 使用相关函数:科学计算三维可视化---Mlab基础(管线控制函数) 一:mlab.pipeline中标量数据可视化 通过持续实例,来感受mlab对数 ...
- 科学计算三维可视化---Mlab基础(管线控制函数)
科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...
- 科学计算三维可视化---Mlab基础(改变物体的外观颜色)
import numpy as np from mayavi import mlab #建立数据 x,y = np.mgrid[-::200j,-::200j] z = *np.sin(x*y)/(x ...
- 科学计算三维可视化---Mlab基础(常用控制函数)
- Python科学计算三维可视化(整理完结)
中国MOOC<Pyhton计算计算三维可视化>总结 课程url:here ,教师:黄天宇,嵩天 下文的图片和问题,答案都是从eclipse和上完课后总结的,转载请声明. Python数据三 ...
- 科学计算三维可视化---Traits介绍
简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...
- 科学计算三维可视化---Mayavi可视化实例
一:Dragon绘制实例(三维扫描的绘制) 三维扫描主要用于对物体空间外形结构以及色彩进行扫描,用以获得物体表面的空间坐标, 他的主要意义在于能够将实物的立体信息转换为计算机能够直接处理的数据信号,为 ...
- 科学计算三维可视化---Mayavi入门(Mayavi库的基本元素和绘图实例)
一:Mayavi库的基本元素 .处理图形可视化和图形操作的mlab模块 .操作管线对象,窗口对象的api (一)mlab模块 (二)mayavi的api 二:快速绘图实例 (一)mlab.mesh的使 ...
随机推荐
- Linux 环境下Web环境搭建————ActiveMQ
1.下载安装包http://activemq.apache.org/activemq-5143-release.html 2.解压至指定目录 bin目录下为执行脚本 (脚本无法执行需要修改权限(chm ...
- Task 6.2冲刺会议九 /2015-5-22
今天把之前的跳转问题加以改正并加以优化.遇到的主要问题是跳转的时后时间有点长,以为没有成功.之后查资料说是端口没有及时释放,导致了程序的滞缓.明天要继续把程序的界面进行优化.
- IHttpModule理解-知识补充
文章:IHttpModule的那些事 可以自定义类实现IHttpModule接口,然后实现接口方法Init,Init方法可以得到HttpApplication 的实例化对象. 然后给对象的事件的注册各 ...
- UIPickerView的使用
简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...
- Alpha阶段敏捷冲刺③
1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 界面雏形设计 数据库初步设计 完成后端框架初步构建 今天计划完成的工 ...
- 累计进度条 PSP 饼图
累计进度条 PSP 饼图 每周例行报告 本周PSP 类别 任务 开始时间 结束时间 被打断时间 总计工作时间 2016年9月24日 读书 构建之法-6.7章 19:00 20:00 2 58m ...
- express和数据库(MySQL)的交互(二)
一.安装express前面都讲了 1.express. cnpm || npm install express --save 2.中间件 a.cnpm || npm install body-pars ...
- enginefuncs_t 结构体中的函数
就是常见的 g_engfuncs 中的函数.AMXX 里就是 fakemeta 的 EngFunc_** // 这些函数由引擎提供给EXTDLL使用.mp.dll hl.dll ... typedef ...
- Day 5 笔记 dp动态规划
Day 5 笔记 dp动态规划 一.动态规划的基本思路 就是用一些子状态来算出全局状态. 特点: 无后效性--狗熊掰棒子,所以滚动什么的最好了 可以分解性--每个大的状态可以分解成较小的步骤完成 dp ...
- 【刷题】BZOJ 4998 星球联盟
Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流.但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条太 ...