图表推荐调研
背景 & 目的
图表选择困难,拿到一份数据是应该用饼图还是用柱图去展示?工程视往往有工程视的判断、设计师有设计师的考量,同时产品和客户的意愿可能又不相同。到底这个数据最适合采用哪种图表去展示?以前我们普遍的采用朴素经验主义,即以前用的啥,我们现在还用啥、别的用的啥我们就用啥。这种方式既不科学、也没有说服力。所以我们需要去维护一套知识库,界合经验和分析去判断哪些那些类的数据更适合用哪种图表展示。本质上是解决一个数据到图表种类的映射关系。
前言
本文主要基于。即阿里的autoChart
去分析他们所采用的解决方案。调研对于该问题,他们的解决方案是否可行,优点以及不足。
简介
AVA Visual Analytics) 是为了更简便的可视分析而生的技术框架。 其名称中的第一个 A 具有多重涵义:它说明了这是一个出自阿里巴巴集团(Alibaba)技术框架,其目标是成为一个自动化(Automated)、智能驱动(AI driven)、支持增强分析(Augmented)的可视分析解决方案。(引用自 ava Readme)
AVA核心流程
各个模块介绍
DataWizard
数据分析模块,本质上是对输入数据的一个统计和抽象、为图表推荐、智能图表提供数据支撑。
data
1 | [ |
options
1 | {"preferences":{"canvasLayout":"landscape"}} |
dataset analysis
1 | [ |
核心代码
path: /node_modules/@antv/chart-advisor/lib/advisor.js 344 function analyze(data, options, showLog)
1 | function analyze(data, options, showLog) { |
CKB
本质上就是一个json,定义了各类图表、以及图表的描述,相当于是一个数据集。
详见:https://observablehq.com/@jiazhewang/ava-ckb
ChartAdvisor
图表推荐,本质上是一个评分系统,根据对数据的分析结果。
处理结果
1 | [ |
核心代码
path: /node_modules/@antv/chart-advisor/lib/advisor.js 59 function dataPropsToSpecs(dataProps, options, showLog)
1 | function dataPropsToSpecs(dataProps, options, showLog) { |
translater
翻译器模块、目前是翻译成g2的渲染语言去渲染(说是后期会增加一些图表库的渲染方法)。
核心代码
path:/node_modules/@antv/chart-advisor/lib/chartLibMapping/G2Plot.js
1 | exports.G2PLOT_TYPE_MAPPING = { |
参考 & 引用
https://chartcube.alipay.com/guide
https://www.npmjs.com/package/@antv/knowledge
https://github.com/antvis/AVA/blob/master/zh-CN/README.zh-CN.md
https://observablehq.com/@jiazhewang/autochart-automatic-chart-dev-library-by-antv