在vue中使用G2图表的示例代码
作者:来点灵感 发布时间:2024-05-28 15:52:22
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,里面有详细的例子。
来源:https://segmentfault.com/a/1190000018567839
猜你喜欢
- 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的
- 看代码吧~def test(): return 1,2a, b = test()1 2a, _ = test()1
- 为什么要指定swagger的api参数api的参数有多种类型:query 参数,如 /users?role=adminpath 参数,如 /
- 关于@property装饰器在Python中我们使用@property装饰器来把对函数的调用伪装成对属性的访问。那么为什么要这样做呢?因为@
- 定义线程最简单的方法:使用target指定线程要执行的目标函数,再使用start()启动。语法:class threading.Thread
- 1、从外部文档中粘贴时,如果不想要其格式,只要文字,可以使用“Edit->paste as text”命令,而不要直接Ctrl+V。2
- 这个问题对于规模稍微大些的项目而言,显得尤其重要了,数据库中如果有几百个存储过程, 难道还一个个找不成,即使自己很了解业务和系统,时间长了,
- SQLserver 2000中出现“指定的服务并未以已安装的服务存在" 解决方案一、将计算机名改成大写。二、将sql server
- 引言将对象的状态信息转换为可以存储或传输的形式的过程叫作序列化类似地从序列化后的数据转换成相对应的对象叫作 反序列化本文介绍 Python
- 首先了解一下需要的几个类所在的packagefrom torchvision import transforms, datasets as
- 用Dreamweaver制作网页时,如果插入的图片、GIF动画、声音、视频或链接的网页是用中文命名的,在用IE浏览器浏览时可能显示不出来。以
- 通常在多个不等式的时候,需要分着写,比如x = 1if x>0 and x<3: print(True)但是在Python中居然
- 本文实例讲述了Yii配置与使用memcached缓存的方法。分享给大家供大家参考,具体如下:1. 下载memcached软件包,解压,把me
- Python编写微信小游戏“跳一跳”的运行脚本,分享给大家。更新了微信后发现了一款小游戏跳一跳,但是玩了一下午最高才达到200,每次差点破纪
- 背景Translation插件在mac上idea能够搜索到,但是在windows上却搜索不到解决勾选上成功了。来源:https://blog
- --按日 select sum(consume),day([date]) from consume_record where year([d
- 基于以下三个原因,我们选择Python作为实现机器学习算法的编程语言:(1) Python的语法清晰;(2) 易于操作纯文本文件;(3) 使
- Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,
- 本文实例为大家分享了JavaScript实现alert弹框的具体代码,供大家参考,具体内容如下因本人水平有限,不足之处还望大家指正。先上图:
- 前几天光耀童鞋喷了一篇《谈网站注册、登录过程》,今天我们在与小爬童鞋梳理购买流程的时候也谈到了这部分内容。其实注册作为一个网站基本功能再普通