内容简介:数据产品首先也是一个web工程,这里不谈是react还是vue,个人认为凭喜好即可。本文想说说关于高交互,多维数据分析,多图表展示的产品如何选择工具库,以及有哪些库可以用。主流的web图表库有:echarts;highcharts;D3js;antv(G2,G6,F2)基于D3封装的react图表库rechart;还有基于G2封装的react图表库viser;Bizcharts,等等。还有关系图展示使用的Cytoscapejs;时序图常用工具库visjs等等 那么如何选择呢?这是一个哲学命题,没有什么是最
数据产品首先也是一个web工程,这里不谈是react还是vue,个人认为凭喜好即可。本文想说说关于高交互,多维数据分析,多图表展示的产品如何选择 工具 库,以及有哪些库可以用。
图表库选择
主流的web图表库有:echarts;highcharts;D3js;antv(G2,G6,F2)基于D3封装的react图表库rechart;还有基于G2封装的react图表库viser;Bizcharts,等等。还有关系图展示使用的Cytoscapejs;时序图常用工具库visjs等等 那么如何选择呢?
这是一个哲学命题,没有什么是最好的,你开心就好。毕竟被说定制性太强的echarts也是可以通过底层zrender绘制最自由的shader。所以,接下来我们是站在工程的角度来分析。
1根据项目涉及的图表复杂度来选择。
简单的传统图表,最佳搭档 echarts,highcharts(商业收费),属于枚举型图表。通过配置项来绘图,所绘制的图表符合其枚举出来的图表类型,或根据既定的规则叠加图表。用于使用传统图表,对图表设计细节定制要求不高的产品。简而言之,就是设计师不会跟你pk视觉还原度的图表。要求:设计师设计要从demo库中枚举展示图表。如果超岗,不好意思作为前端的你可能就比较痛苦。
假如你的设计师比较个性,这时候可以考虑使用G2绘制。所谓的个性化设计,其实要求是很高的。g2的官网是这么介绍自己的:
G2 是一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性,用户无需关注各种繁琐的实现细节,一条语句即可构建出各种各样的可交互的统计图表。
所以选择用g2绘制个性化图表设计是要遵循这套图形语法的。下图来自g2官网( www.yuque.com/antv/g2-doc…
如果想要超自由的表达,大量个性化创新型设计,甚至是出现信息可视化(如果你的页面有很多坐标系,且比例尺复杂,或者根本没有正经坐标系和比例尺)。这时候就该使用神器d3js了。毫不犹豫,d3可以绘制任何合理设计的图表。这里又提到一个词“合理设计”,什么是合理设计,其实就是能够找到数据与图形映射的关系。也就是设计的图形位置颜色大小等等都能有明确的规则计算出来。从d3js的slogan我们就可以看出,d3js给自身的定义就不仅仅限制与图表,它不说自己是xxxchart。而是Data-Driven Documents。如字面意思,数据驱动dom。d3js提供的是数据与dom(图形)的映射处理。所以我们可以分成,数据源--- 数据映射层(d3)--- 绘图层(svg / div css / canvas)。d3也提供一个简易的dom操作工具d3-selection.
2 根据数据形态选择工具
其实决定产品形态的最大因素是数据类型。 数据类型大致有: 分类数据;量化数据;时序数据;空间数据;关系型数据; 分类数据;量化数据;使用到到多数是传统统计报表。
时序数据:是时间为主要线索的数据,反应时间变化。这里推荐一个visjs: visjs.org/timeline_ex… 可以比较有效的帮助展示时间。同时d3-time与插值器Time Intervals 可以很好的提供便捷的时间计算。moment也是不错的工具。
空间数据,最常见的是地理信息数据,由于国家统计局要求的中国地图出处必须合法,并通过审核。所以,使用d3绘制需要geojson就可能不符合国情且仅适合矢量图绘制。所以,这里推荐使用高德和百度地图,高德封装了一个可视化工具loca,百度地图可以配合echarts使用。
图:高德数据可视化效果图
关系型数据,就是大家看到的点线边数据。包括树形结构数据。这类数据比较特殊性。可选框架包括:d3-force,g6 ,visjs,Cytoscapejs,cola.js, gephi 等等。这些都是基于力导图模拟电荷运动计算布局,所以使用者需要对力导图碰撞算法,图算法,三角函数比较熟悉,最好熟悉一下四叉树八叉树算法(用于优化检索效率)。
图: Cytoscapejs -demo
3. 图表工具库组合使用
正如上文提到的一个概念:数据源--- 数据映射层 --- 绘图层(svg / div css / canvas)。我们绘图的过程可以分为这三层。同时,数据源还能在分业务模型和控制层,绘图层又可分为,图形模型与表现层。但使用不同但工具,这些分层就会被不同层度的组合起来。例如,使用echarts,数据映射层仅仅是通过option的配置来控制,后续绘图就都交给echarts。
使用d3绘图就可以明显感受到分层的好处。假设数据已处理好,使用d3做布局和样式转化,绘图层我们就可以交给专业的绘图库。例如手写css!开玩笑~ 比如:createjs 。甚至使用d3的关系图布局算法,组合g6 绘图能力。只要清楚的各司其职,我们可以发挥每个库的最大能力。(前提是最好是能按需使用的库,好在大多数库都支持)。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 数据架构选型必读:4月数据库产品技术解析
- 数据产品指北:数据平台
- 大数据产品经理必备的数据挖掘知识概述(一)认识数据之数据可视化
- 大数据产品经理必备的数据挖掘知识概述(一)认识数据
- 产品数据体系建设基础:一个产品的数据体系建设
- 网约车数据产品实战一:设计数据体系
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员的数学思维修炼(趣味解读)
周颖 / 清华大学出版社 / 2014-4-1 / 45.00元
本书是一本专门为程序员而写的数学书,介绍了程序设计中常用的数学知识。本书门槛不高,不需要读者精通很多高深的数学知识,只需要读者具备基本的四则运算、乘方等数学基础知识和日常生活中的基本逻辑判断能力即可。本书拒绝枯燥乏味的讲解,而是代之以轻松活泼的风格。书中列举了大量读者都很熟悉,而且非常有趣的数学实例,并结合程序设计的思维和算法加以剖析,可以训练读者的数学思维能力和程序设计能力,进而拓宽读者的视野,......一起来看看 《程序员的数学思维修炼(趣味解读)》 这本书的介绍吧!