Python数据可视化分为

标量可视化,矢量可视化,轮廓线可视化
  标量又称无向量,只有大小没有方向,运算遵循代数运算法则比如质量,密度,温度,体积,时间
  矢量又称向量,它是由大小,方向共同确定的量,运算时遵循几何运算法则,如速度,加速度,力,磁场强度,电场强度等

#实例1标量数据可视化
'''
使用等值面对标量场进行可视化(体绘制[三维空间数据场]常用手段)
等值面:标量场中标量值相等的曲面,类似地图中的等高线
  tvtk.ContourFilter等值面过滤器,用来获得等值面,
  它是由vtkObject<--vtkAlogorithm<--vtkPolyDataAlgorithm继承得到的一个类
两个方法
  generate_values()设定n条等值线的值,一般用于重新绘制等值线
  set_value()设定一条等值线的值,一般用于覆盖某条等值线或者新增加一条等值线

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.update()
grid = plot3d.output.get_block(0)#获取读入的数据集
con = tvtk.ContourFilter()#创建等值面对象
con.set_input_data(grid)#将网格与其进行绑定
#范围由数组Scalars.range决定,颜色也由scalars决定
con.generate_values(10,grid.point_data.scalars.range)#创建10个等值面
#默认映射表:最小值为红色,最大值为蓝色
#对映射器进行构造
m=tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,input_connection=con.output_port)
#对标量行为属性进行赋值,设置成新增加的数组的取值范围
a=tvtk.Actor(mapper=m)
#由于这十个等值面会相互嵌套,为观察等值面内部结构,修改Actor对象透明度为0.5
a.property.opacity=0.5
#绘制交互窗口
win=ivtk_scene(a)
win.scene.isometric_view()
event_loop()

generate_values是创建等值面的函数,它可以同时设定n条等值线的值。
尝试更改generate_values之中的n值之后颜色改变。可以使用set_value方法设置每个等值面的值,它的第一个参数指定了第几个等值面,第二个参数指定了等值面的值。
运行效果是很漂亮的,通过设置不同的透明度会出现不同的效果。

矢量数据可视化
用箭头表示矢量数据场的数据,
  箭头的大小可以表示标量信息,
  箭头的方向可以表示矢量数据的方向
为了在矢量数据的网格处放置箭头符号,使用tvtk库提供的Glyph3D方法
可以产生放缩,着色和具有方向的符号
vtkObject<--vtkAlgorithm<--vtkPolyDataAlgorithm<--vtkGly3D
可以采用降维的方法降低数据密度
可以使用tvtk.MaskPoints()对数据进行降采样
vtkObject<--vtkAlgorithm<--vtkPolyDataAlgorithm<--vtkMaskPoints

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.update()
grid = plot3d.output.get_block(0)#获取读入的数据集(StructureGrid)
#对数据集中的数据进行随机选取,每50个点选择一个点
mask = tvtk.MaskPoints(random_mode = True,on_ratio = 50)#为数据进行了降采样
#每50个点选择一个点,为数据进行了降采样。为了观察效果可以在shell中进行输出降采样的效果
mask.set_input_data(grid)#将grid与musk相连
#创建表示箭头的PolyData数据集
glyph_source = tvtk.ArrowSource()#ArrowSource可以改成ConeSource()出来的箭头变成圆锥,scale_factor=2设置防缩系数
#在Mask采样后的PolyData数据集每个点上放置一个箭头
#箭头的方向、长度和颜色由于点对应的矢量和标量数据决定
#在本例中箭头的方向表示速度的方向,大小和颜色表示密度
#箭头越大,该点标量值越大。箭头的颜色表表示标量值的大小
#红色对应的标量值越小,蓝色对应的标量值越大
glyph=tvtk.Glyph3D(input_connection=mask.output_port,scale_factor=4)#4表示符号的共同放缩系数
#tvtk的可视化技术,它输入数据的每个点都被拷贝一个符号。
#符号本身是通过Glyph3D的filter的第二个输入函数来接收vtkPolyData的类型数据
#然后通过ArrowSource在每个点上放置一个箭头
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()

运行效果如下,可以说是仿真版的西北风本风了哇咔咔咔

按照注释的方法换成圆锥是什么效果呢?

哈哈哈小圆锥萌萌哒~如果我再皮一下换成立方体呢?

竟然莫名地好看。。

降采样技术是挺重要的,要不可能根本出不来

可以使用tvtk.MaskPoints()对数据进行降采样。可以通过Shell查看降采样之前的数据个数和降采样之后的数据个数

相差还是多的

空间轮廓线可视化
针对载入的流体数据计算其空间轮廓线并进行三维可视化
使用tvtk.StructuredGridOutlineFilter()来实现PoluData对象的外边框计算
该类也是继承自
vtkObject<--vtkAlgorithm<--vtkPolyDataAlgorithm<--vtkStructuredGridOutlineFilter

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.update()#让plot3D计算出其输出数据
grid = plot3d.output.get_block(0)#获取读入的数据集(StructureGrid)
outline = tvtk.StructuredGridOutlineFilter()#计算表示外边框(轮廓)的PolyData对象
configure_input(outline,grid)#调用将外框计算与数据集产生关联
#两个参数:一个是外框PolyData对象一个是流体数据grid
m = tvtk.PolyDataMapper(input_connection=outline.output_port)a = tvtk.Actor(mapper=m)#创建一个Action实体Actor
a.property.color= 0.3, 0.3, 0.3
#窗口绘制
win = ivtk_scene(a)

运行结果就是当前文件的轮廓线

转载于:https://www.cnblogs.com/Andrea-null/p/8986762.html

Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化相关推荐

  1. python 标量_Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化

    Python数据可视化分为 标量可视化,矢量可视化,轮廓线可视化 标量又称无向量,只有大小没有方向,运算遵循代数运算法则比如质量,密度,温度,体积,时间 矢量又称向量,它是由大小,方向共同确定的量,运 ...

  2. python 速度矢量_Python TVTK 标量数据可视化与矢量数据可视化

    Python数据可视化分为 标量可视化,矢量可视化,轮廓线可视化 标量又称无向量,只有大小没有方向,运算遵循代数运算法则比如质量,密度,温度,体积,时间 矢量又称向量,它是由大小,方向共同确定的量,运 ...

  3. python根据表格数据生成折线图_Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图 ② 面积图.堆叠面积图 1. 折线图--单线图 importnumpy as npimportpandas as pdimportmatplotlib.pyplot ...

  4. Python毕业设计 大数据招聘网站爬取与数据分析可视化 - flask

    文章目录 0 前言 1 课题背景 2 实现效果 3 Flask框架 4 Echarts 5 爬虫 0 前言

  5. 【Python】Pyecharts数据可视化模块练习

    python:Pyecharts数据可视化模块练习 # -*- coding: utf-8 -*- """ Created on Sun Aug 5 22:16:09 2 ...

  6. python散点图显示数据_Python数据可视化——散点图

    PS: 翻了翻草稿箱. 发现竟然存了一篇去年2月的文章...尽管naive.还是发出来吧... 本文记录了python中的数据可视化--散点图scatter, 令x作为数据(50个点,每一个30维), ...

  7. Py之pyecharts:python包之数据可视化包pyecharts简介、安装、使用方法之详细攻略

    Py之pyecharts:python包之数据可视化包pyecharts简介.安装.使用方法之详细攻略 目录 pyecharts简介 pyecharts的安装 pyecharts的使用方法 1.图形绘 ...

  8. python 3d大数据可视化软件_十大顶级大数据可视化工具推荐

    要使数据分析真正有价值和有洞察力,就需要高质量的可视化工具.市场上有很多产品,特点和价格各不相同,本文列出了一些广泛认可的工具.其实企业如何选择一个合适的可视化工具,并不是一件容易的事情,需要仔细的考 ...

  9. python基于web可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    转自:数据派ID:datapi 作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一 ...

最新文章

  1. 分享13个帮助你简化开发的jQuery插件
  2. 经济和信息化谋定研究-左晓栋:国家网络安全事件应急预案
  3. Power Automate Desktop概览
  4. 产品经理如何做好需求挖掘
  5. Anaconda使用pyinstaller打包exe程序体积过大
  6. c# 字符串格式化为日期格式
  7. 团队作业3 需求分析与系统设计
  8. 【指纹识别】基于matlab GUI指纹打卡系统【含Matlab源码 867期】
  9. 诺顿企业版本最新版本14.2安装测试SymantecEndpointProtection_14.2.0_MP1
  10. apache VSF 操作类
  11. linux卸载驱动命令,简单的Linux驱动程序以及如何加载/卸载驱动
  12. Navicat在输入da..时自动关闭解决方法(手心输入法)
  13. Linux切换jdk版本
  14. 小ck活动机器人包包_2018爆款包:不是LV,Gucci而是平价小CK~
  15. 网红茶饮难逃“短命”之殇,喜茶能否打破这个魔咒?
  16. html5 倒计时跳转动画,HTML5弹性摇摆旋转的倒计时动画
  17. OpenCV - 分水岭算法图像分割(Python实现)
  18. 强连通分量 圆桌骑士
  19. 当前超级计算机的应用方兴未艾,(全国通用版)18版高考语文大一轮复习第2周基础组合练4...
  20. 亿级流量电商网站微服务架构图(图灵学院)

热门文章

  1. 没想到这家聪明的公司,正在用AIoT让机器对话
  2. HTML5学习路线资料,HTML5前端面试的技术栈
  3. F5 bigip.conf配置问题
  4. Java反射机制实例解析
  5. 进军“手机照相馆”:京东要和3C厂商干什么?
  6. Spring4+quartz2集群借助邮箱或是短信实现生日的农历提醒(Quartz实现农历、阴历、公历生日提醒)...
  7. /bin/bash^M解决办法
  8. [翻译]Json.NET API-Linq to Json Basic Operator(基本操作)
  9. 5G 信令流程 — 5GC 的注册管理(RM,Registration Management)
  10. Kubernetes — CNI 规范