说到可视化,大家可能会想到表格、饼图、柱状图、三维大屏图、建筑图等等,或者会想到excel、matlab、echarts等工具,但可视化真的仅限于此吗?本章将从前端工程师的角度,结合《数据可视化》,对可视化的基础、架构以及选型做一次探讨。
可视化的定义
可视化的作用
可视化简史:略
说到数据可视化,不得不说到数据科学:DIKW模型
而这个模型,也是我们数据处理的标准流程,完成从原始数据的转化。
数据可视化的意义:用户通过对可视化的感知,使用可视化交互工具进行数据分析,获取知识,并进一步提升为智慧。
数据可视化分类
数据可视化与其他学科领域的关系
可视化方法与技术:目前有生命科学可视化、表意性可视化、地理信息可视化、产品可视化、教育可视化、系统可视化、商业智能可视化、知识可视化等方法与技术,每一个名词都可以展开一篇巨大的篇幅,本篇只做一个概念梳理,读者可对其中感兴趣的方向做具体研究。
设计数据可视化系统面临的挑战
那Web前端和可视化到底有什么区别呢?
众所周知,前端三剑客 html+css+js 即可解决 web 前端所有功能,而相关领域的 js 库目前最流行的莫过于 react、vue、angular 以及相对较古老的 jQuery,这些框架或者 js 库即可辅助你完成 web 前端所遇到的大部分需求,但可视化领域呢?
统计数据图表库:主要为统计数据做可视化展示,主要涉及柱状图、折线图、饼图等,目前开源图表库有 Plotly、G2、Echarts、Chartist、Chart.js 等。
GIS地图库:处理地图地理信息可视化相关的库。常见的有 L7、Mapbox、Leaflet、Deck.gl、CesiumJS 等。
图可视化绘图库:主要描述点边关系图,流程图等带有边概念的图。如 G6、cytoscape.js、mxGraph 等。
通用渲染库:绘制更加灵活的图形、图像或者物理模型,比如游戏模型、建筑模型、复杂图表等功能,当你在上述领域找不到对应工具时,即可选择此类 js 库,但灵活的同时带来的就是困难度的提升。主要有 Pixi.js、SpriteJS、P5.js、Rough.js、G、ThreeJS、D3.js 等。
首先浏览器实现可视化的方式目前有4种,分别是 HTML + CSS、SVG、Canvas2D、WebGL,其中 WebGL 利用了 GPU 并行处理的特性,在大数据场景下,性能大大优于前3种绘图方式。具体渲染流程如下:
选型
当然,Canvas 和 SVG 的对比不能简单看图形复杂度和性能,在强调操作的准确性以及对字体的清晰度要求较高的场景,或许你该从 SVG 下手。
最后,我再补充一些有关 CPU 和 GPU 交互的概念,从计算机角度看看如何渲染图形。
图形是如何绘制的
渲染流程(渲染管线)
参考资料:
《数据可视化》第2版 - 陈为、沈则潜、陶煜波 等编著
ps:本章节有部分图片是作者在以前做笔记的时候保存的,为了方便理解添加至文中。如有侵权,请联系作者删除,谢谢。