Python科学计算与可视化 C1
Posted LiQiang33
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python科学计算与可视化 C1相关的知识,希望对你有一定的参考价值。
文章目录
1. 介绍
-
可视化,即将事物或者过程进行抽象,最终以图像或图像的形式进行展示。最早由美国国家科学基金会(NSF)提出
-
可视化可分为信息可视化与科学可视化。信息可视化即将抽象的信息与知识进行抽象并展示。科学可视化即将空间数据(工程或者测量的数据)进行可视化计算与展示的过程
1.1 科学可视化方法
- 包括 二维标量数据场可视化、三维标量数据场可视化以及矢量数据场可视化
- 二维标量数据场可视化
- 颜色映射法: 将染色与数据之间建立映射关系
- 等值线法: 图中对象的数值指标的各个点连接成平滑的曲线,用一组的数据表示连续面状的图像,使其数值特征渐变的方法
- 立体图法与层次分割法:(地形数据场)立体图法使用立体的图像来显示平面的数据,将平面数据场的数据转化为高度;层次分割,对立体图中的三角面片进行分层,是各个层之间由明确的分割线
1.2 三维标量可视化
包括面绘制法与体绘制法
- 面绘制法: 使用图形还原三维空间结构,使用面展示出来
- 体绘制法:不仅仅展示表面的细节,更有空间的细节,将三维空间中离散的数据,直接转换为立体图像,中间不需要几何图元
1.3 矢量数据场
- 直接法
使用箭头、方向、色轮等表示矢量的数据
- 流线法:流场在在某一时间的流动概念,能表示各点流体的方向
2. TVTK库
- TVTK是在在VTK库基础之上使用traits库进行再次封装,其用法与VTK相似,文档可以参考VTKhttp://code.enthought.com/projects/mayavi/
2.1 TVTK库安装
下载**VTK numpy traits mayavi pyQt5(支持py3.8)**之后才能使用TVTK,下载完之后按照顺序安装
- 使用whl进行安装
whl下载: https://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
分别下载对应python版本
- 使用pip进行安装(推荐)
安装前配置国内的镜像
pip install VTK
pip install numpy
pip install traits
pip install PyQt5
pip install mayavi
安装完之后即可使用
2.2 代码测试
- 使用tvtk_doc
from tvtk.tools import tvtk_doc
tvtk_doc.main()
- 使用VTK创建立方体
from tvtk.api import tvtk
cube = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0)
print(cube)
vtkCubeSource (0000028C84E2DD70)
Debug: Off
Modified Time: 1311820
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver (0000028C8BAC8C70)
Event: 33
EventName: ModifiedEvent
Command: 0000028C8CBE0F60
Priority: 0
Tag: 1
Executive: 0000028C8445DD00
ErrorCode: No error
Information: 0000028C8B99D6A0
AbortExecute: Off
Progress: 0
Progress Text: (None)
X Length: 1
Y Length: 2
Z Length: 3
Center: (0, 0, 0)
Output Points Precision: 0
2.3 TVTK 与 VTK
- TVTK在类名中去除了vtk前缀
- 命名按照python的方式,使用下划线连接单词: `AddItem -> add_item’
- VTK对象的方法在TVTK中使用traits属性代替
m.SetInputConnection(c.GetOUtputPort()) # VTK用法
m.input_connection(c.output_port) # TVTK用法
3 创建基本三维对象
基本的三维对象有:
- CubeSource: 立方体
- ConeSource: 圆锥
- CylinderSource: 圆柱
- ArcSource: 圆弧
- ArrowSource: 箭头
每个三维对象有不同的属性,以Cube为例
s.x_length
s.y_length
s.z_length
s.center
s.output_points_precision # 立方体对象的精度
对这些属性可以进行操作
4 使用VTK显示三维对象
对三维数据进行展示时,由于计算机屏幕是二维的,因此要实现不同的映射
基本步骤:
- 创建数据源
- 使用PolyDataMapper将数据转换为图形数据
- 创建Actor,并传入数据
- 创建Renderer(相当于一个舞台),将Actor添加到Renderer中
- 创建RenderWindow,将Renderer添加到窗口中(舞台要在桌面展示)
- 创建窗口交互,并传入窗口
- 初始化窗口并启动
from tvtk.api import tvtk
# 1, 创建数据源
cube = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0, center=(0, 0, 0))
# 2. 转为图像数据
data_mapper = tvtk.PolyDataMapper(input_connection=cube.output_port)
# 3 创建actor
actor = tvtk.Actor(mapper=data_mapper)
# 4 创建绘制对象
render = tvtk.Renderer(background=(0, 0, 0))
render.add_actor(actor)
# 5. 创建窗口
render_window = tvtk.RenderWindow(size=(600, 600))
render_window.add_renderer(render)
# 6.创建交互
window_interactor = tvtk.RenderWindowInteractor(render_window=render_window)
# 7.开启
window_interactor.initialize()
window_interactor.start()
以上是关于Python科学计算与可视化 C1的主要内容,如果未能解决你的问题,请参考以下文章