图表引擎调研-编辑器接入
本文主要调研一些开源的底层图表库,评估其易用性、灵活性、可定制性、以及接入charts-studio的难易程度。目的是评估图表工具的底层引擎是是否需要更换,能否为图表工具选择一个灵活且高效的底层引擎。
项目详情见:chart-lib-learn
ECharts
NPM下载量 :322,525
书写习惯-Demo[基础折线图]
1 | option = { |
可定制性
该部分会去实现是一个LCharts目前已有的高度定制化的图表,通过具体实现代码来评估可定制性。
1 | <script> |
适配表单式编辑成本
总体低
echarts
数据的样式主要在series
中定制化样式需要重写每个数据项内部的style
,这里需要一个由单个配置项映射到多个数据项样式的渠道(即LCharts)。由于有echarts
的上层建筑LCharts
的存在提供了高级配置项总体适配成本为低。
其他问题
echarts
构建图表的方式为自顶向下对图表元素进行拆分,对拆分到的细节进行参数化配置,未拆分到的细节则不能进行参数化配置,会导致该部分样式无法定制。
G2
NPM下载量 :84,547
书写习惯-Demo[基础折线图]
1 | const data = [ |
可定制性
1 | <script> |
适配表单式编辑成本
中
g2
声明编码式的书写方式导致仍然需要对g2
封装一层(g2Plot)才能实现通过高级配置项对底层数据项的修改。
其他问题
G2
目前似乎还在快速更新期,各个版本之间的API差异较大,文档不是特别完善。
G2Plot
NPM下载量 :46,738
书写习惯-Demo[基础折线图]
1 | const data = [ |
可定制性
1 | <script> |
适配表单式编辑成本
中低
其他问题
同G2
vega
NPM下载量 :75,493
书写习惯-Demo[基础折线图]
1 | { |
可定制性
1 | <script> |
适配表单式编辑成本
中
其他问题
文档不友好,示例过少,使用熟练度过低
HighCharts
NPM下载量 :651,198
书写习惯-Demo[基础折线图]
1 | Highcharts.chart('container', { |
可定制性
1 | <script> |
适配表单式编辑成本
中
其他问题
商业付费、API不够友好。
图表工具底层引擎期望
选项 | 期望 | 原因 |
---|---|---|
写法 | 配置式 | 声明式和编码式的书写方式均不利于通过表单直接配置需要中间层做转义,转义难度递增。 |
默认渲染引擎 | svg | 1. svg先天以dom元素作为图元组成图表,利于图元选取。 2. 导出 png ,svg 文件场景下svg 转canvas(png) ,相较于canvas 转png 难度较低 |
开源 | 是 | |
商业付费 | 否 | |
适配表单配置难度 | 低 | |
整体改造成本 | 低 | |
定制性 | 高 | |
动画友好性 | 高 |
基础引擎总结
引擎 | 写法 | 默认渲染引擎 | 开源 | 商业付费 | 适配表单配置难度 | 定制性 | 整体改造成本 |
---|---|---|---|---|---|---|---|
ECharts | 配置式 | canvas | 是 | 否 | 低 | 中 | 待评估 |
G2 | 声明式 | canvas | 是 | 否 | 高 | 中 | 待评估 |
G2Plot | 配置式 | G2 | 是 | 否 | 中低 | 中 | 待评估 |
HighCharts | 配置式 | svg | 是 | 是 | 中 | 中高 | 待评估 |
vega | 配置式 | D3 | 是 | 否 | 中高 | 待详细调研 | 待评估 |
小结
从目前的调研结果来看,G2
,G2Plot
,HighCharts
,vega
。在可定制性上相较于echarts
并没有本质上的提升,但在适配表单上会有较大的成本体现。这里暂时不更换图表工具的底层引擎,仍是采用对升级的方式弥补一些缺陷,对于一些及特殊类的细节配置点暂不提供支持计划。该方向上的调研会持续推进,以期在各图表库的使用熟练度提升后会有一些不同的结论。