科学计算三维可视化---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的使 ...
随机推荐
- selenium之鼠标事件
1.鼠标悬停火狐版本51,selenium版本3ActionChains(driver).move_to_element(above).perform()执行代码时,报错:selenium.commo ...
- servlet的方法解析
一般来说servlet继承了HttpServlet,我们可以覆盖某些方法来实现自己的功能. Init()和Init(ServletConfig config),我们一般只需覆盖后者,因为这个可以从se ...
- BETA随笔6/7
前言 我们居然又冲刺了·六 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 新方案代码比之前的更简单,但是对场景的要求相应变高了,已经实现,误差感人 代码 ...
- 网桥 以及 IEEE802.1D 生成树协议
(一)网桥 网桥是一个layer 2设备,能够连接两个不同的网段. 如图
- python学习笔记05:贪吃蛇游戏代码
贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygam ...
- CANOpen学习指南
对于初学者,相对于其他总线的资料来说,在国内CANOpen的资料并不多.而且并不是所有资料都适合初学者看的.这里给出一些建议,对CANOpen感兴趣的,可以参考一下学习的顺序. 前提:需要对CAN总线 ...
- C++编译与链接(1)-编译与链接过程
大家知道计算机使用的一系列的1和0 那个一个C++语言程序又是如何从一个个.h和.cpp文件变成包含1和0的可执行文件呢? 可以认为有以下的几个环节 源程序->预处理->编译和优化-> ...
- vue2.0 keep-alive 最佳实战(转载)
1.基本用法 vue2.0提供了一个keep-alive组件用来缓存组件,避免多次加载相应的组件,减少性能消耗 <keep-alive> <component> <!-- ...
- [2017BUAA软工]第3次个人作业
软工第3次个人作业--案例分析 一. 调研,评测 1.软件的bug(至少两个,不少于40字) 测试软件: 必应词典移动端 测试平台:iPhone 6 bug1 对于翻译功能中的图片翻译功能,必应词典是 ...
- 第十周(11.18-11.24)----个人项目----学习java总结2
一.获取随机数 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) ,注意这里的每一个括号最好都不要省略掉. 例: public static void main(S ...