赞
踩
内容来自中国大学MOOC,北京理工大学,python数据分析与展示课程,侵删。
如有错误,烦请指出。
等值面过滤器 tvtk.ContourFilter()
标量数据可视化代码:
'''标量数据可视化''' 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()
等值面个数可以自定义:
可以为每个等值面指定值:
使用 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()
将glyph_source = tvtk.ArrowSource()
替换为 glyph_source = tvtk.ConeSource()
,
缩放系数变为 scale_factor=2
,可以生成由圆锥表示的矢量数据:
使用 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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。