科学计算三维可视化---Mlab基础(数据可视化)
推文:科学计算三维可视化---TVTK库可视化实例
使用相关函数:科学计算三维可视化---Mlab基础(管线控制函数)
一:mlab.pipeline中标量数据可视化
通过持续实例,来感受mlab对数据可视化的方便性
(一)生成标量数据
等值面:(外层会覆盖内层)
import numpy as np
from mayavi import mlab x,y,z = np.ogrid[-::20j,-::20j,-::20j]
s = np.sin(x*y*z)/(x*y*z) mlab.contour3d(s) #等值面绘制
mlab.show()

切平面:
import numpy as np
from mayavi import mlab x,y,z = np.ogrid[-::20j,-::20j,-::20j]
s = np.sin(x*y*z)/(x*y*z) #绘制两个方向的切平面
mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s), #scalar_field获得数据的标量数据场
plane_orientation="x_axes", #设置切平面的方向
slice_index=
) mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),
plane_orientation="y_axes",
slice_index=
) #为这个数据绘制外框
mlab.outline()
mlab.show()

复合观测方法
import numpy as np
from mayavi import mlab x,y,z = np.ogrid[-::20j,-::20j,-::20j]
s = np.sin(x*y*z)/(x*y*z) src = mlab.pipeline.scalar_field(s) #建立标量场数据 mlab.pipeline.iso_surface(src,contours=[s.min()+0.1*s.ptp(),],opacity=0.1) #iso_surface对输入体绘制其等值面,记得设置透明度,否则内部数据将被外部遮挡
mlab.pipeline.iso_surface(src,contours=[s.max()-0.1*s.ptp(),]) #也可以使用等值面iso_surface,来观察一定范围内的数据 #绘制切平面
mlab.pipeline.image_plane_widget(src, #使用切平面来观察某一平面的数据细节
plane_orientation="z_axes", #设置切平面的方向
slice_index=
) mlab.show()

二:mlab.pipeline中矢量数据可视化
import numpy as np
from mayavi import mlab x,y,z = np.mgrid[::20j,::20j,::20j] #u,v,w是在点x,y,z处的矢量数据
u = np.sin(np.pi*x)*np.cos(np.pi*z)
v = -*np.sin(np.pi*x)*np.cos(*np.pi*z)
w = np.cos(np.pi*x)*np.sin(np.pi*z) + np.cos(np.pi*y)*np.sin(*np.pi*z) mlab.quiver3d(u,v,w) #quiver3d可以在数据点处画出箭头
mlab.outline() mlab.show()

上面数据过于密集:可以使用降采样:科学计算三维可视化---TVTK库可视化实例


import numpy as np
from mayavi import mlab x,y,z = np.mgrid[::20j,::20j,::20j] #u,v,w是在点x,y,z处的矢量数据
u = np.sin(np.pi*x)*np.cos(np.pi*z)
v = -*np.sin(np.pi*x)*np.cos(*np.pi*z)
w = np.cos(np.pi*x)*np.sin(np.pi*z) + np.cos(np.pi*y)*np.sin(*np.pi*z) src = mlab.pipeline.vector_field(u,v,w)
#pipeline的vectors构建了矢量域
mlab.pipeline.vectors(src,mask_points=10,scale_factor=2.0) #mask_points没10个数据点选取一个,scale_factor放缩比率2.0 mlab.show()

切面观察矢量数据
import numpy as np
from mayavi import mlab x,y,z = np.mgrid[::20j,::20j,::20j] #u,v,w是在点x,y,z处的矢量数据
u = np.sin(np.pi*x)*np.cos(np.pi*z)
v = -*np.sin(np.pi*x)*np.cos(*np.pi*z)
w = np.cos(np.pi*x)*np.sin(np.pi*z) + np.cos(np.pi*y)*np.sin(*np.pi*z) src = mlab.pipeline.vector_field(u,v,w)
#pipeline的vectors构建了矢量域
mlab.pipeline.vector_cut_plane(src,mask_points=10,scale_factor=2.0) #mask_points没10个数据点选取一个,scale_factor放缩比率2.0 mlab.show()

另一个矢量数据重要显示方法:级数的等值面
级数是矢量域中的重要参数,他可以显示数量的法线等值面,我们通过计算矢量法向得到一个标量域
import numpy as np
from mayavi import mlab x,y,z = np.mgrid[::20j,::20j,::20j] #u,v,w是在点x,y,z处的矢量数据
u = np.sin(np.pi*x)*np.cos(np.pi*z)
v = -*np.sin(np.pi*x)*np.cos(*np.pi*z)
w = np.cos(np.pi*x)*np.sin(np.pi*z) + np.cos(np.pi*y)*np.sin(*np.pi*z) src = mlab.pipeline.vector_field(u,v,w)
magnitude = mlab.pipeline.extract_vector_norm(src) #extract_vector_norm通过计算矢量法向得到一个标量域
mlab.pipeline.iso_surface(magnitude,contours=[2.0,0.5]) #构建等值面 mlab.outline()
mlab.show()

流线的可视化对矢量数据也非常有意义,在很多应用中,他可以表示流体力学的轨迹,有可以表示电磁场线
import numpy as np
from mayavi import mlab x,y,z = np.mgrid[::20j,::20j,::20j] #u,v,w是在点x,y,z处的矢量数据
u = np.sin(np.pi*x)*np.cos(np.pi*z)
v = -*np.sin(np.pi*x)*np.cos(*np.pi*z)
w = np.cos(np.pi*x)*np.sin(np.pi*z) + np.cos(np.pi*y)*np.sin(*np.pi*z) flow = mlab.flow(u,v,w,seed_scale=,
seed_resolution=,
integration_direction="both") mlab.outline()
mlab.show()

复合观测方法
为矢量场数据给出有意义的矢量观测是比较有困难的工作,因此通常我们需要使用不同的根据,对矢量数据进行可视化
#等值面
iso = mlab.pipeline.iso_surface(magnitude,contours=[2.0,],opacity=0.3) #构建等值面
#矢量场
vec = mlab.pipeline.vectors(magnitude,mask_points=,line_width=,
color=(0.8,0.8,0.8),
scale_factor=.)
#矢量场流线
flow = mlab.pipeline.streamline(magnitude,seedtype="plane",
seed_visible=False,
seed_scale=0.5,
seed_resolution=,
linetype="ribbon")
#矢量场切平面
vcp = mlab.pipeline.vector_cut_plane(magnitude,mask_points=,
scale_factor=,
colormap="jet",
plane_orientation="x_axes")

科学计算三维可视化---Mlab基础(数据可视化)的更多相关文章
- 科学计算三维可视化---Mlab基础(管线控制函数)
科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...
- 科学计算三维可视化---Mlab基础(鼠标选取交互操作)
一:鼠标选取介绍 二:选取红色小球分析 相关方法:科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数) 1.小球场景初始化建立 import numpy as np from maya ...
- Python科学计算三维可视化(整理完结)
中国MOOC<Pyhton计算计算三维可视化>总结 课程url:here ,教师:黄天宇,嵩天 下文的图片和问题,答案都是从eclipse和上完课后总结的,转载请声明. Python数据三 ...
- 科学计算三维可视化---TVTK库可视化实例
一:TVTK库可视化实例 Plot3D文件知识:PLOT3D 数据格式 PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件).网 ...
- 科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)
Mlab了解 Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化. 过程为: .建立数据源 .使用Filter( ...
- 科学计算三维可视化---Mlab基础(改变物体的外观颜色)
import numpy as np from mayavi import mlab #建立数据 x,y = np.mgrid[-::200j,-::200j] z = *np.sin(x*y)/(x ...
- 科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解)
一:TVTK的管线 使用管线技术将TVTK中各个对象穿连起来,几乎所有渲染引擎都会提到管线技术 在TVTK中,每个对象只需要实现相对简单的任务,整个管线则能根据用户的需求,实现复杂的数据可视化处理. ...
- 科学计算三维可视化---TVTK入门(数据加载)
一:数据加载 大多数可视化应用的数据并非是在TVTK库中构建的,很多都是通过接口读取外部数据文件 (一)使用vtkSTLReader来读取外部文件 .stl 文件是在计算机图形应用系统中,用于表示三角 ...
- 科学计算三维可视化---Traits介绍
简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...
随机推荐
- 20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有 ...
- 第一个scrim任务分布
一.项目经理:郭健豪 二.scrim分工 杨广鑫.郭健豪:制作第一个精选页面布局,和代码实现.如:实现图书推荐布局中图书的排布,搜索框代码的实现,消息提示的跳转 李明.郑涛:实现第一个精选页面数据库的 ...
- bata2
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- VMware上配置DPDK环境并运行实例程序
1. 在虚拟机VMware上配置环境 VMware安装:http://www.zdfans.com/html/5928.html Ubuntu:https://www.ubuntu.com/downl ...
- Week2:阅读笔记与思考
<构建之法>这本书的内容通俗易懂,每一个知识点都有许多事例佐证,阅读起来不像其他教科书那样枯燥无聊.但阅读过第一.二.十六章之后还是产生了几个疑问,以及更深层次的思考. 第一章 问题1: ...
- Matlab图像匹配问题
已知一个任意形状,查找在大图像中最接近的形状位置. 输入:一个小图形状和一张大图 输出:最接近的形状在大图中的位置 假设: (1)已知形状与目标形状有一定的形变. (2)形状与大图像均为二值图像,图中 ...
- 上传插件(WebUploader)
官网:http://fex.baidu.com/webuploader/插件下载:https://github.com/fex-team/webuploader/releases/download/0 ...
- 1014 C语言文法定义与C程序的推导过程
<程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | <声明> ...
- [BUAA_SE_2017]代码复审-Week2
代码复审 CheckList 1.概要部分 代码能符合需求和规格说明么? 符合,经过-c及-s合法参数测试,程序均能生成.求解相应数独. 代码设计是否有周全的考虑? 对于非法输入,程序处理不够周全. ...
- label上的事件操作执行两次
label上的事件执行两次 标签(空格分隔): 事件执行两次 今天在做公司项目的过程中,需要在表单元素单选框上绑定事件,执行相应的操作,结果发现事件执行了两次 具体代码: <div class= ...