IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 科学计算三维可视化笔记(第二周 基础实战) -> 正文阅读

[Python知识库]python 科学计算三维可视化笔记(第二周 基础实战)


内容来自中国大学MOOC,北京理工大学,python数据分析与展示课程,侵删。
如有错误,烦请指出。


python 科学计算三维可视化笔记 第二周 基础实战

一、实例1:标量数据可视化

等值面过滤器 tvtk.ContourFilter()
1 - 1 - 等值面过滤器
标量数据可视化代码:

'''标量数据可视化'''
from tvtk.api import tvtk
from tvtkfunc import ivtk_scene, event_loop

# 读入plot3D数据
plot3d = tvtk.MultiBlockPLOT3DReader(
        xyz_file_name = "combxyz.bin",
        q_file_name = "combq.bin",
        scalar_function_number = 100,
        vector_function_number = 200
    )
# 让plot3D计算其输出数据
plot3d.update()
# 获取读入的数据集对象
grid = plot3d.output.get_block(0)

# 创建等值面对象  
con = tvtk.ContourFilter()
con.set_input_data(grid)
# 指定等值面数量为10, 指定数据范围
con.generate_values(10, grid.point_data.scalars.range)

# 设定映射器的变量范围属性
m = tvtk.PolyDataMapper(scalar_range = grid.point_data.scalars.range,
                        input_connection=con.output_port)
a = tvtk.Actor(mapper = m)
a.property.opacity = 0.5  # 设定透明度为0.5

# 窗口绘制
win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

1 - 2 - 实例
等值面个数可以自定义:
1 - 3 - 实例
可以为每个等值面指定值:
1 - 4 - 实例

二、实例2:矢量数据可视化

使用 tvtk.Glyph3D() 引入符号化技术
使用 tvtk.MaskPoints() 进行降采样

矢量数据可视化代码:

'''矢量数据可视化'''
from tvtk.api import tvtk
from tvtkfunc import ivtk_scene, event_loop

# 读入plot3D数据
plot3d = tvtk.MultiBlockPLOT3DReader(
        xyz_file_name = "combxyz.bin",
        q_file_name = "combq.bin",
        scalar_function_number = 100,
        vector_function_number = 200
    )
# 让plot3D计算其输出数据
plot3d.update()
# 获取读入的数据集对象
grid = plot3d.output.get_block(0)

# 对数据集中的数据进行随机选取,每50个点选择一个点
mask = tvtk.MaskPoints(random_mode=True, on_ratio=50)
mask.set_input_data(grid)
# 创建表示箭头的PolyData数据集
glyph_source = tvtk.ArrowSource()
#glyph_source = tvtk.ConeSource()

# 在Mask采样后的PolyData数据集每个点上放置一个箭头
# 箭头的方向(速度的方向)           由与点对应的矢量和标量数据决定
# 长度(短标量值小,长标量值大)     由与点对应的矢量和标量数据决定
# 颜色(红色标量值小,蓝色标量值大) 由与点对应的矢量和标量数据决定
glyph = tvtk.Glyph3D(input_connection=mask.output_port,
                     scale_factor=4)
#glyph = tvtk.Glyph3D(input_connection=mask.output_port,
#                     scale_factor=2)
glyph.set_source_connection(glyph_source.output_port)
m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                        input_connection=glyph.output_port)
a = tvtk.Actor(mapper=m)

#窗口绘制
win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

2 - 1 - arrowsource - 4
glyph_source = tvtk.ArrowSource() 替换为 glyph_source = tvtk.ConeSource()
缩放系数变为 scale_factor=2,可以生成由圆锥表示的矢量数据:

2 - 2 - conesource - 2

三、实例3:空间轮廓线可视化

使用 tvtk.StructuredGridOutlineFilter() 计算 PolyData 对象的外边框(轮廓线)

空间轮廓线可视化代码:

'''实例3:空间轮廓线可视化'''
from tvtk.api import tvtk
from tvtk.common import configure_input
from tvtkfunc import ivtk_scene, event_loop

# 读入plot3D数据
plot3d = tvtk.MultiBlockPLOT3DReader(
        xyz_file_name = "combxyz.bin",
        q_file_name = "combq.bin",
        scalar_function_number = 100,
        vector_function_number = 200
    )
# 让plot3D计算其输出数据
plot3d.update()
# 获取读入的数据集对象
grid = plot3d.output.get_block(0)

# 计算表示外边框的PolyData对象
outline = tvtk.StructuredGridOutlineFilter()
# 将外框计算与数据集产生关联
configure_input(outline, grid)
m = tvtk.PolyDataMapper(input_connection=outline.output_port)
a = tvtk.Actor(mapper=m)
a.property.color = 0.3, 0.3, 0.3

# 窗口绘制
win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

3 - 1 - 实例

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:44:49  更:2022-07-03 10:47:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:55:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码