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数组的绘图函数)的更多相关文章

  1. 科学计算三维可视化---Mlab基础(鼠标选取交互操作)

    一:鼠标选取介绍 二:选取红色小球分析 相关方法:科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数) 1.小球场景初始化建立 import numpy as np from maya ...

  2. 科学计算三维可视化---Mlab基础(数据可视化)

    推文:科学计算三维可视化---TVTK库可视化实例 使用相关函数:科学计算三维可视化---Mlab基础(管线控制函数) 一:mlab.pipeline中标量数据可视化 通过持续实例,来感受mlab对数 ...

  3. 科学计算三维可视化---Mlab基础(管线控制函数)

    科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...

  4. 科学计算三维可视化---Mlab基础(改变物体的外观颜色)

    import numpy as np from mayavi import mlab #建立数据 x,y = np.mgrid[-::200j,-::200j] z = *np.sin(x*y)/(x ...

  5. 科学计算三维可视化---Mlab基础(常用控制函数)

  6. Python科学计算三维可视化(整理完结)

    中国MOOC<Pyhton计算计算三维可视化>总结 课程url:here ,教师:黄天宇,嵩天 下文的图片和问题,答案都是从eclipse和上完课后总结的,转载请声明. Python数据三 ...

  7. 科学计算三维可视化---Traits介绍

    简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...

  8. 科学计算三维可视化---Mayavi可视化实例

    一:Dragon绘制实例(三维扫描的绘制) 三维扫描主要用于对物体空间外形结构以及色彩进行扫描,用以获得物体表面的空间坐标, 他的主要意义在于能够将实物的立体信息转换为计算机能够直接处理的数据信号,为 ...

  9. 科学计算三维可视化---Mayavi入门(Mayavi库的基本元素和绘图实例)

    一:Mayavi库的基本元素 .处理图形可视化和图形操作的mlab模块 .操作管线对象,窗口对象的api (一)mlab模块 (二)mayavi的api 二:快速绘图实例 (一)mlab.mesh的使 ...

随机推荐

  1. 每日Scrum(10)

    今天我们小组整合了下我们所编辑的程序,然后在界面上进行了修改和少部分的完善,现在就等着下午的验收了 任务展板 燃尽图如下:

  2. Chapter 10 软件测试

    软件测试是软件质量保证的一项关键活动,验证与确认是贯穿软件生命周期的规范化评估方法.软件验证则试图证明在软件生存的各个阶段是否满足客户的需求,软件确认是一系列的活动和过程,两个活动相互独立但却相辅相成 ...

  3. WebGL学习笔记三

    在上一章中主要说明了通过矩阵来实现平面图形的平移.旋转.缩放,到最后完全可以用4*4矩阵实现所有的动作,在本章就是第四章主要是对矩阵进行了封装,其WebGL的流程和上一章大部分大部分相同,定义可以在w ...

  4. bata7

    目录 组员情况 组员1:胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:何宇恒 组员11:刘一好 展示组内最新 ...

  5. React---点击按钮实现内容复制功能

    思路: 1.给要复制的内容容器添加一个标签(可以是ID,可以是类名等),通过dom技术获取该容器对象: 2.创建Range对象(某个区域内连续的内容),把该容器对象放进去: 3.将Range对象添加到 ...

  6. windows多线程(六) 互斥量Mutex与关键段CriticalSection比较

    一.关键段CS 和 互斥量Mutex 的相同点:都有线程拥有权 关键段和互斥量都有线程拥有权,即可以被一个线程拥有.在 前面讲关键段CS的文章中有说到,关键段结构体的第四个参数保存着拥有该关键段的线程 ...

  7. ACM数论之旅17---反演定理 第一回 二项式反演(神说要有光 于是就有了光(´・ω・`))

    终于讲到反演定理了,反演定理这种东西记一下公式就好了,反正我是证明不出来的~(-o ̄▽ ̄)-o 首先,著名的反演公式 我先简单的写一下o( ̄ヘ ̄*o) 比如下面这个公式 f(n) = g(1) + g ...

  8. UFLDL学习笔记 ---- 主成分分析与白化

    主成分分析(PCA)是用来提升无监督特征学习速度的数据降维算法.看过下文大致可以知道,PCA本质是对角化协方差矩阵,目的是让维度之间的相关性最小(降噪),保留下来的维度能量最大(去冗余),PCA在图像 ...

  9. 使用 OpenGL API 播放 BIK 视频

    BIK作为在游戏中广泛使用的视频格式,这里就非常有必要普及一下了 直接贴代码,看注释吧.有不懂的地方就留言提问吧 /** * * 解码BIK视频文件为像素数据,使用PBO更新OpenGL纹理,绘制纹理 ...

  10. jsp中的下载链接

    1.下载链接jsp界面(a链接直接链文件可以看出文件在服务器中的路径,用servlet处理的链接则看不出) <%@ page language="java" contentT ...