We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
什么是可视化 可视化场景与工具 怎样可视化 可视化过程中的常见问题
定义: 将大量离散或者连续数据转化为有联系、可交互的图形或图像,增强表达方式和人为认知,从而达到实现从数据到分析、发现、决策、学习等目的;
广义数据可视化涉及信息技术、自然科学、统计分析、图形学、交互、地理信息等多种学科。
“科学可视化(Scientific Visualization)、信息可视化(Information Visualization)和可视分析学(VisualAnalytics)三个学科方向通常被看成可视化的三个主要分支。这三个分支整合在一起形成的新学科“数据可视化”,是可视化研究领域的新起点。”——《数据可视化》
狭义: 数据可视化是 数据(dataset) 到 视觉元素(visualMap) 的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道) 常用的视觉元素(visualMap): 图形类别(symbol)、图形大小(symbolSize) 颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、 颜色明暗度(colorLightness)、颜色饱和度(colorSaturation)、色调(colorHue)
工具
数据可视化过程可以分为下面几个步骤:
趋势 对比 分布 流程 时序 空间 关联性
确定要展示的数据和数据结构,数据采集;
数据要有,但是画布大小限制,过量不能直接显示且渲染性能,故要filter数据 有几个问题:
具体到前端界面:
在前端做的可视化,能做的仅仅是小规模数据的可视化,如果你遇到超大规模数据要进行可视化,那么可以选择:
静态图片,截图,大数据量少交互的数据可以在考虑ssr
Canvas 提供的绘图能力更底层,适合做到像素级的图形处理,能动态渲染和绘制大数据量的图形。而 SVG 抽象层次更高,声明描述式的接口功能更丰富,内置了大量的图形、滤镜和动画等,方便进行文档元素的维护,也能导出为文件脱离浏览器环境使用。
性能差异: 网上有不少 Canvas 和 SVG 性能对比的文章,得出的结论大体是“Canvas 性能更好,适合更大量数据的渲染”。其实这么说是有失偏颇的。性能对比要看场景。从底层来看,Canvas 的性能受画布尺寸影响更大,而 SVG 的性能受图形元素个数影响更大。下图是微软 MSDN 上给的一个对比图。
定制和交互: 比较流行的看法是 SVG 做定制和交互更有优势,因为有类似 DOM 的结构,能快速应用浏览器底层的鼠标事件、CSS 样式、CSS3 动画等。不过基于 Canvas 做上层封装后也能实现类似的定制和交互,并且自由度更高。
对于大数据量,您推荐使用svg吗?对于频繁操作dom有什么好建议? 我是一个链接
三种解决方案:
React 渲染⼀一个空 div 作为容器, 容器中的 DOM 数据/操作/渲染 都由 D3 负责
React负责DOM和SVG的结构,D3负责数据和布局的计算
react-faux-dom :react 高阶组件 仿制一层虚拟 DOM 可供 D3 操纵, 同时把这层 DOM 套上状态管理理传给 React
其他三方解决方案
不是熟练api调用和框架的使用, 而是可以撸一个可视化引擎为奋斗目标;
svg canvas webgl 共性的 matrix 变换是否了解?
canvas 和 webgl 里的事件绑定怎么处理?
像素级别事件和box级别事件怎么处理?
2d 和 3d的事件绑定有什么差异?
滤镜怎么做?原理是什么吗?高斯模糊有几种方式?
贝赛尔曲线相关原理和作用?贝塞尔曲线包围盒计算?贝塞尔曲线相交检测?
vector2d 和 vector3d 所有的方法的几何意义?
The text was updated successfully, but these errors were encountered:
No branches or pull requests
以前的一些理解
提纲(基础)
一、什么是可视化(Data Visualization)
定义: 将大量离散或者连续数据转化为有联系、可交互的图形或图像,增强表达方式和人为认知,从而达到实现从数据到分析、发现、决策、学习等目的;
广义数据可视化涉及信息技术、自然科学、统计分析、图形学、交互、地理信息等多种学科。
“科学可视化(Scientific Visualization)、信息可视化(Information Visualization)和可视分析学(VisualAnalytics)三个学科方向通常被看成可视化的三个主要分支。这三个分支整合在一起形成的新学科“数据可视化”,是可视化研究领域的新起点。”——《数据可视化》
狭义: 数据可视化是 数据(dataset) 到 视觉元素(visualMap) 的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道)
常用的视觉元素(visualMap):
图形类别(symbol)、图形大小(symbolSize)
颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、
颜色明暗度(colorLightness)、颜色饱和度(colorSaturation)、色调(colorHue)
二、可视化场景与工具
工具
三、怎样可视化
数据可视化过程可以分为下面几个步骤:
确定要展示的数据和数据结构,数据采集;
数据要有,但是画布大小限制,过量不能直接显示且渲染性能,故要filter数据
有几个问题:
有序性 间隔 比例 连续性 数字 时间 对数 指数
具体到前端界面:
四、常见的问题
1. 分类过多的场景 不适用饼图; 数据数量级相差较大 不适合折线图(折线趋势最好不要太陡峭) 可以柱状 或者取对数; 数据太过平缓难以看到趋势,可以调整数据展示范围
2. 数据量太大怎么办?
3. ssr(服务端渲染)
4. 渲染器: canvas OR svg (向下兼容可能会html/xml)
Canvas 提供的绘图能力更底层,适合做到像素级的图形处理,能动态渲染和绘制大数据量的图形。而 SVG 抽象层次更高,声明描述式的接口功能更丰富,内置了大量的图形、滤镜和动画等,方便进行文档元素的维护,也能导出为文件脱离浏览器环境使用。
性能差异:
网上有不少 Canvas 和 SVG 性能对比的文章,得出的结论大体是“Canvas 性能更好,适合更大量数据的渲染”。其实这么说是有失偏颇的。性能对比要看场景。从底层来看,Canvas 的性能受画布尺寸影响更大,而 SVG 的性能受图形元素个数影响更大。下图是微软 MSDN 上给的一个对比图。
定制和交互:
比较流行的看法是 SVG 做定制和交互更有优势,因为有类似 DOM 的结构,能快速应用浏览器底层的鼠标事件、CSS 样式、CSS3 动画等。不过基于 Canvas 做上层封装后也能实现类似的定制和交互,并且自由度更高。
5. react、vue等数据驱动型单向数据流类的框架与d3、echart直接DOM操作的一些冲突
三种解决方案:
React 渲染⼀一个空 div 作为容器, 容器中的 DOM 数据/操作/渲染 都由 D3 负责
React负责DOM和SVG的结构,D3负责数据和布局的计算
react-faux-dom :react 高阶组件
仿制一层虚拟 DOM 可供 D3 操纵, 同时把这层 DOM 套上状态管理理传给 React
其他三方解决方案
五、可视化奋斗方向:
不是熟练api调用和框架的使用, 而是可以撸一个可视化引擎为奋斗目标;
svg canvas webgl 共性的 matrix 变换是否了解?
canvas 和 webgl 里的事件绑定怎么处理?
像素级别事件和box级别事件怎么处理?
2d 和 3d的事件绑定有什么差异?
滤镜怎么做?原理是什么吗?高斯模糊有几种方式?
贝赛尔曲线相关原理和作用?贝塞尔曲线包围盒计算?贝塞尔曲线相交检测?
vector2d 和 vector3d 所有的方法的几何意义?
大屏数据可视化示例
The text was updated successfully, but these errors were encountered: