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)

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

Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化的更多相关文章

  1. 用Python玩转数据第六周——高级数据处理与可视化

    1.matplotlib中有两个模块,pyplot和pylab import matplotlib.pyplot as plt  ///plt.plot(x,y) import pylab as pl ...

  2. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  3. python grib气象数据可视化

    基于Python的Grib数据可视化           利用Python语言实现Grib数据可视化主要依靠三个库——pygrib.numpy和matplotlib.pygrib是欧洲中期天气预报中心 ...

  4. python 抓取数据,pandas进行数据分析并可视化展示

    感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为半桶子水的水平,一直在想写什么,为什么写,怎么写. 直到现在找到了一种好的办法: 1.写什么 自己手上掌握的,工 ...

  5. 利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  6. Python数模笔记-StatsModels 统计回归(4)可视化

    1.如何认识可视化? 图形总是比数据更加醒目.直观.解决统计回归问题,无论在分析问题的过程中,还是在结果的呈现和发表时,都需要可视化工具的帮助和支持. 需要指出的是,虽然不同绘图工具包的功能.效果会有 ...

  7. Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  8. 用Python浅析股票数据

    用Python浅析股票数据 本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData ...

  9. 使用 python 处理 nc 数据

    前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是& ...

随机推荐

  1. python数据类型及其详解

    一.数据类型介绍 1.字符串(string) 三种类型:单引号,双引号,三引号 a = 'jam' b = "JamHsiao" c = '''JAMHSIAO''' print( ...

  2. 爬取github项目。

    import requests from bs4 import BeautifulSoup url = 'https://github.com/login' headers = { 'User-Age ...

  3. ucos中的中断管理

    一.中断的概念 中断是一种硬件机制,用于处理异步事件.中断的实时性比轮询要好,通过中断,微控制器可以在异常发生的时候立刻进行处理,而不需要不断轮询事件是否发生. CM3支持中断嵌套,使得高优先级异常可 ...

  4. python-django(创建项目、应用、运行)

    1.创建项目.应用 方法一.命令行创建 <1>.创建项目命令 django-admin startproject  项目名称 <2>.创建应用命令 django-admin s ...

  5. JavaSE基础知识(5)—面向对象(5.6 static关键字)

    一.说明 static属于一种修饰符,可以用于修饰 属性.方法.初始化块.内部类用static修饰的成员,称为静态成员不用static修饰的成员,称为普通成员 二.静态属性的特点 1.生命周期 静态属 ...

  6. leetcode7:反转整数

    给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假 ...

  7. 调皮的udp组播技术

    2017年本科毕业,经历过千辛万苦的找工作之后,我进入了现在的这家公司.虽是职场小白,但励志成为IT界的一股清流(毕竟开发的妹子少,哈哈).因为公司的业务需要,我负责的部分是利用组播技术实现OSG模型 ...

  8. RNA-seq中的基因表达量计算和表达差异分析

    RNA-seq中的基因表达量计算和表达差异分析 差异分析的步骤:1)比对:2) read count计算:3) read count的归一化:4)差异表达分析: 背景知识:1)比对:普通比对: BWA ...

  9. 25. pt-slave-restart

    pt-slave-restart -h 192.168.100.103 -P 3306 -u admin -p admin \--error-numbers 1032 set global slave ...

  10. EasyPR源码剖析(5):车牌定位之偏斜扭转

    一.简介 通过颜色定位和Sobel算子定位可以计算出一个个的矩形区域,这些区域都是潜在车牌区域,但是在进行SVM判别是否是车牌之前,还需要进行一定的处理.主要是考虑到以下几个问题: 1.定位区域存在一 ...