AntV 可视化方案详解
一、AntV 是什么
AntV 是蚂蚁集团(Ant Group)开源的数据可视化解决方案体系,不是单一图表库。它涵盖了统计图表、关系图、地理可视化、移动端图表、多维表格等多个领域。
AntV 产品矩阵
| 库 | 定位 | 适用场景 | GitHub Stars |
|---|---|---|---|
| G2 | 统计图表——图形语法(Grammar of Graphics) | 折线图、柱状图、散点图等通用图表 | ~12k |
| G6 | 图可视化(Graph Visualization) | 关系图、拓扑图、流程图、树图 | ~11k |
| L7 | 地理空间可视化 | 地图、热力图、路径图、3D 地图 | ~3.5k |
| F2 | 移动端图表 | 手机 H5 上的轻量图表 | ~7.8k |
| S2 | 多维交叉表格 | 透视表、分析表格、电子表格 | ~1.3k |
AntV vs ECharts
| 维度 | AntV (G2) | ECharts |
|---|---|---|
| 理念 | 图形语法——数据映射到图形属性 | 配置项——通过 option 描述图表 |
| 学习曲线 | 较高(需理解语法概念) | 低(配置式) |
| 定制性 | 极高(语法灵活组合) | 中等(配置项覆盖大部分场景) |
| 动画 | 声明式,由语法驱动 | 配置式 |
| TypeScript | 原生支持 | 支持 |
| 移动端 | F2 专门优化 | ECharts 5 已优化 |
| 包体积 | 按需引用(G2 ~500KB) | ~1MB(完整包) |
二、G2——统计图表
G2 基于图形语法(Grammar of Graphics)设计。核心思想是用数据字段映射到视觉通道(位置、颜色、大小、形状等)。
2.1 快速开始
1 | npm install @antv/g2 |
1 | import { Chart } from '@antv/g2'; |
2.2 核心概念
数据(Data) → 图形语法(标记 + 编码) → 渲染
1 | G2 的绘图过程: |
标记(Mark):图形的基本类型
1 | chart.interval() // 柱状图/条形图 |
编码(Encode):数据字段 → 视觉通道
1 | .encode('x', 'year') // x 轴位置 |
2.3 常见图表
1 | // 柱状图 |
2.4 比例尺(Scale)
比例尺控制数据到视觉通道的映射方式:
1 | chart.scale('sales', { |
2.5 交互
1 | // 内置交互 |
2.6 多视图(Facet)
1 | // 分面:按 type 拆分为多个子图 |
2.7 动画
1 | chart.interval() |
三、G6——图可视化
G6 专注于关系网络的可视化,适用于流程图、拓扑图、社交网络等。
3.1 快速开始
1 | npm install @antv/g6 |
1 | import G6 from '@antv/g6'; |
3.2 常见布局
1 | /* 布局类型 */ |
3.3 G6 应用场景
1 | ├── 流程图(dagre 布局) |
四、L7——地理可视化
1 | npm install @antv/l7 |
1 | import { Scene, HeatmapLayer } from '@antv/l7'; |
五、AntV 与 React / Vue 集成
React
1 | import { useEffect, useRef } from 'react'; |
Vue 3
1 | <template> |
六、面试题
Q1: AntV G2 和 ECharts 的核心区别
1 | G2 基于图形语法——数据通过 encode 映射到视觉通道(x/y/color/size), |
Q2: AntV 产品矩阵中什么时候用 G2 什么时候用 G6
1 | G2:统计图表(折线图、柱状图、散点图、饼图) |
Q3: G2 中 encode 和 scale 的区别
1 | encode:数据字段到视觉通道的映射声明("把 date 映射到 x 轴") |