array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 时空数据可视化 - 爱码网

空间数据可视化

数据拓扑

结构化网格
 • 笛卡尔方式
 Xi+1,j = Xi,j + Δ

• 规格化/统一(Regular/Uniform)
 Xi+1,j = Xi,j + Δ I

• 线性方式(Rectilinear)
 Xi+1,j = Xi,j + Δ i(Xi,j)

• 曲线方式
 Xi+1,j = X(i, j)
 Yj+1 = Y (i, j)

非结构化网格
 • 有限元素
 • 四面体
 • 六面体
 • 其他
 
• 数据存储在离散的位置
• 介乎中间的位置
• 许多类型的核函数(kernel)
• 沿着每个坐标轴重建
• 对于非组织的数据更复杂

• 标量: 密度,温度
• 向量: 风向, 力场
• 张量: 压力, 张力, 漫射

空间标量数据可视化

坐标图常用于一维数据可视化
定义域是空间信息有关的属性,值域可取不同的物理属性

二维数据:医学影像数据 、地理学数据
 方法:
  颜色映射法:建立颜色映射表,将标量数据转换为颜色表的索引值
  等值线提取法:在同一条曲线上,曲线上的每一点代表的数值相同
  高度映射法:高度通常用于编码测量到的数据
  标记法
  
三维数据:医学影像数据、CT, MRI、大气数值模拟数据
方法:
 等值面绘制方法
 直接体绘制方法

等值面提取算法

将三维体数据分割成小的体素(立方体),通过判断体素的八个顶点的值来判断它是否在等值面上。
  时空数据可视化
歧义性问题
时空数据可视化
时空数据可视化

Marching Cube基本算法的15模式中:
 无二义性表面:0,1,2,4,5,8,9,11,14
 各有一个二义性表面:3,6(两种连接方式)
 各有二个二义性表面:10,12(四种连接方式)
 有三个二义性表面:7(八种连接方式)
 有六个二义性表面:13(64种连接方式)
 共93种可能的连接方式;除去对称和相同的方式,共有34种方式。

等值面加速算法
 采用带有最大最小值的八叉树、KD树,按需分叉(branch-on-need)策略:延迟等分的方法,在分叉方向上“低层”分割总是占据最大可能多的结点
 GPU加速:金字塔
 
等值面质量提升:
 更高精度的插值
 拓扑结构分析

体绘制

体绘制中所有体素对最后的图像亮度都有贡献根据合成顺序的不同,体绘制方法分为:图像空间扫描的体绘制方法,物体空间扫描的体绘制方法
光线投射体绘制算法:对于图像平面上的每一像素,从视点投射出一穿过该像素的视线,该视线穿过体数据空间,算法直接利用该视线上的采样值合成该像素的亮度。

体素
梯度矢量就是一阶导数
梯度矢量总是指向最大 上升的方向并垂直于等值线
对正交网格,梯度的计算常采用中心差分时空数据可视化

对边界区域,可改成前向、后向差分或逼近的二阶差分
时空数据可视化

关键步骤1:体光照模型(加强深度感觉 增强面结构信息)
关键步骤2:决定吸收的值 和发射的部分
 传输函数(传递函数设计通常很难、不直观、很繁琐):
   目的:决定体素对最后图像的贡献大小
      决定体素的材料性质和外观
   原则:
       重要的特征和用户感兴趣的区域赋以高的不透明度值
       使不重要的区域透明或很小的不透明度值
关键步骤3:体采样
 等距离采样:
  t=t1;
  v = undefined;
  while (t < t2) {
  x=x0 + at;
  y=y0 + b
t;
  z =z0 + c*t;
  v=EvaluateRayFunction (v,t);
  t=t+delta_t;
}
关键步骤4:体积分
 体积分的离散解:
  沿着视线方向离散地重采样数据场
时空数据可视化

体绘制合成算法

从后向前的积分:
优点:
 计算比从前向后的方法简单直接
 不用存储累积的α值
时空数据可视化

从前向后的积分
 优点:
  可利用早期光线终止算法,当α接近于1时,后面的体元不会再对该像素点有所贡献,可直接终止,省去不必要的计算。因其速度快,应用广泛。
时空数据可视化

空间向量数据可视化

向量场可视化

可视化目标:
  展示场的导向趋势信息
  表达场中的模式
  
向量场可视化方法:
  基于标量场映射可视化
  基于几何的方法
  基于纹理的方法
  基于拓扑分析的方法
  
向量场的空间和时间维度
 空间维度:
  2D (平面流)
  2.5D (曲面上的流、边界流)
  3D (三维空间上的流)
 时间维度:
  定常流 (静态或一个时间步)
  非定常流 (时变、瞬态)
  
标记法:
 线条(hedge hogs)、箭头、方向标志符(三角图符)等
 优点:
  实现简单、直观、灵活
 缺点:
  可视混乱
 无法揭示出数据的内在连续性
 难以表达特征结构如涡流等
 
基于积分曲线的方法:
流线
 对静态流场或时变流场的某个时刻,从某一点开始的一条连续曲线,其上任一点的切线方向均与向量场在 该点的方向一致
时空数据可视化
s为流线轨迹参数,
τ 为某个时间点的流场

迹线(Pathline)
 对时变流场来说,从某一点释放一个粒子在各个时刻形成的一条曲线,其上任一点的切线方向均与该时刻向量场在 该点的方向一致
时空数据可视化
t为时间参数

脉线
 在时变流场的某点,持续释放粒子,在某个时刻,这些粒子形成的轨迹线
时空数据可视化

时线
 脉线的一个扩展,从一条起始轨迹或一个起始区域上的不同位置生成一系列脉线
 
基于积分曲线的方法:
 对稳定向量场,流线、迹线、脉线
相同
 非稳定场,迹线、脉线
不同
时空数据可视化

提升积分曲线的方法的质量:
 关键技术1:积分曲线的计算
时空数据可视化

欧拉方法:简单快速,但精度太低
x(t+dt) = x(t) + v(x(t)) * dt
 关键技术2:种子点的选取、流线放置
 (1)过多   视觉混乱
 (2)过少  表达不完整
 种子点的放置策略:覆盖性 (Coverage)、均匀性 (Uniformity)、连续性 (Continuity)

基于纹理的方法:点噪音,随机排列一些圆点,按照局部流场方向对圆点变形,将变形后的圆点用滤波器扩散到纹理中

空间张量数据可视化

每个数据点的值为n维矩阵
描述数据在数据点邻域上如何变化

标量指数法

以弥散张量成像数据DTI为例
时空数据可视化
时空数据可视化

相关文章: