Python科学计算与可视化 C1

Posted LiQiang33

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python科学计算与可视化 C1相关的知识,希望对你有一定的参考价值。

文章目录

1. 介绍

  • 可视化,即将事物或者过程进行抽象,最终以图像或图像的形式进行展示。最早由美国国家科学基金会(NSF)提出

  • 可视化可分为信息可视化与科学可视化。信息可视化即将抽象的信息与知识进行抽象并展示。科学可视化即将空间数据(工程或者测量的数据)进行可视化计算与展示的过程

1.1 科学可视化方法

  • 包括 二维标量数据场可视化、三维标量数据场可视化以及矢量数据场可视化
  1. 二维标量数据场可视化
  • 颜色映射法: 将染色与数据之间建立映射关系

  • 等值线法: 图中对象的数值指标的各个点连接成平滑的曲线,用一组的数据表示连续面状的图像,使其数值特征渐变的方法

  • 立体图法与层次分割法:(地形数据场)立体图法使用立体的图像来显示平面的数据,将平面数据场的数据转化为高度;层次分割,对立体图中的三角面片进行分层,是各个层之间由明确的分割线

1.2 三维标量可视化

包括面绘制法与体绘制法

  • 面绘制法: 使用图形还原三维空间结构,使用面展示出来

  • 体绘制法:不仅仅展示表面的细节,更有空间的细节,将三维空间中离散的数据,直接转换为立体图像,中间不需要几何图元

1.3 矢量数据场

  • 直接法

使用箭头、方向、色轮等表示矢量的数据

  • 流线法:流场在在某一时间的流动概念,能表示各点流体的方向

2. TVTK库

2.1 TVTK库安装

下载**VTK numpy traits mayavi pyQt5(支持py3.8)**之后才能使用TVTK,下载完之后按照顺序安装

  1. 使用whl进行安装

whl下载: https://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
分别下载对应python版本

  1. 使用pip进行安装(推荐)

安装前配置国内的镜像

pip install VTK
pip install numpy 
pip install traits
pip install PyQt5
pip install mayavi

安装完之后即可使用

2.2 代码测试

  1. 使用tvtk_doc
from tvtk.tools import tvtk_doc
tvtk_doc.main()

  1. 使用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 创建基本三维对象

基本的三维对象有:

  1. CubeSource: 立方体
  2. ConeSource: 圆锥
  3. CylinderSource: 圆柱
  4. ArcSource: 圆弧
  5. ArrowSource: 箭头

每个三维对象有不同的属性,以Cube为例

s.x_length
s.y_length
s.z_length
s.center
s.output_points_precision   # 立方体对象的精度

对这些属性可以进行操作

4 使用VTK显示三维对象

对三维数据进行展示时,由于计算机屏幕是二维的,因此要实现不同的映射

基本步骤:

  1. 创建数据源
  2. 使用PolyDataMapper将数据转换为图形数据
  3. 创建Actor,并传入数据
  4. 创建Renderer(相当于一个舞台),将Actor添加到Renderer中
  5. 创建RenderWindow,将Renderer添加到窗口中(舞台要在桌面展示)
  6. 创建窗口交互,并传入窗口
  7. 初始化窗口并启动
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的主要内容,如果未能解决你的问题,请参考以下文章

Python科学计算与可视化

Python科学计算与可视化

python科学计算与数据可视化——Matplotlib

Python TVTK 标量数据可视化与矢量数据可视化

科学计算和可视化

科学计算和可视化