乐趣区

在vue中使用G2图表

G2 笔记
G2 是蚂蚁金服的一套开源图表插件,因项目需要研究了一下,相比 Echarts 来说,G2 文档比较难懂,网上也没有太多示例,所以在这里记录一些使用 G2 遇到的问题。
官方推荐在 vue 项目中使用 Viser,它对 G2 进行了封装,使用起来可能更方便,又研究了一个 Viser,结果 Viser 整个只对 viser-react 如何使用进行了介绍,对 viser-vue 一笔带过,官网是这么介绍的:
我们以 viser-react 举例写一个 chore 图为例,viser-vue 和 viser-ng 的用法类似。
结果用的时候发现这区别也太大了 : (,去 github 上找 issue,还算有些收获,但如何定制一个符合产品需求的图形还是不知道啊,只能开啃文档,把 G2 和 Viser 的文档比对来比对去,最后得出一个结论:直接在 vue 中用 G2 比使用 viser-vue 更方便(因为 viser-vue 一点文档没有啊!)
如果不懂 G2 的话,viser-vue 是玩不转的,所以还是先讲 G2。
1. 在 vue 中直接使用 G2
安装
npm install @antv/g2

npm install @antv/data-set
DataSet 必不可少,它是 G2 的数据处理模块。
文件中引用
import G2 from ‘@antv/g2’

import {View} from ‘@antv/data-set’
创建图表
先创建一个图表容器
<div id=”funnelNode” ></div>
之后实例化 chart 对象,参考官网示例代码,这里主要记录如何修改一些配置属性来定制符合需求的图形。

漏斗图分基础漏斗图(底部是方形)和尖底漏斗图,两者使用时的区别是实例化图表时几何标记对象 Geom 的 shape() 方法,shape(‘funnel’) 表示基础漏斗,shape(‘pyramid’) 表示尖底漏斗。(https://www.yuque.com/antv/g2-docs/api-geom)
关于图表的事件处理(https://www.yuque.com/antv/g2-docs/tutorial-chart-event),官方文档中有详细介绍,这里只介绍漏斗图点击事件绑定方法,如下:

chart.on(‘interval:click’, ev => {
// 这里写自定义事件
})
此处使用 interval:click 是因为漏斗图对应的 geom 类型是 interval(https://www.yuque.com/antv/g2-docs/tutorial-geom)。
2. 在 vue 中使用 viser-vue:
安装
npm install viser-vue

npm install @antv/data-set
main.js 中全局引用
import Viser from ‘viser-vue’

Vue.use(Viser)
绘制图表(以漏斗图为例)
Viser 官网给了基础漏斗图(其实是尖底漏斗图)的例子,首先就是要把它改造成真的基础漏斗图(漏斗底部是方形),将示例代码中的 <v-pyramid> 标签替换成 <v-funnel> 标签,因为在 G2 中“funnel”代表基础漏斗,“pyramid”代表尖底漏斗,Viser 封装时也是基于此。
替换前:
<v-pyramid
:position=”funnelOpts.position”
:color=”funnelOpts.color”

/>
替换后:
<v-funnel
:position=”funnelOpts.position”
:color=”funnelOpts.color”

/>
如果需要加点击事件,在 <v-funnel> 标签里使用:on-click 绑定事件。
我的 github 项目地址:https://github.com/Inspiration1/asteroid, 里面有详细的例子。

退出移动版