9102 年,蚂蚁金服前端是怎么写图表的?
相信很多开发者都有过被图表搞得很抓狂瞬间:业务压力大,想快速上个图表,折腾半天配出来却丑的不能看;Demo 里明明看着很美,换成真实数据立刻变成买家秀了..... 很长一段时间里,这些问题也在困扰着蚂蚁的前端,写个轻量级图表,怎么就那么难?
为了让图表开发过程变得更加简单、愉悦,蚂蚁金服可视化团队结合阿里经济体内外 20000+ 业务系统和日均千万级 UV 产品中提炼出来的业务场景和图表需求,提炼出一套通用统计图表库— G2Plot。
有了它,蚂蚁金服前端使用图表的日常是这样的:
前端小K今天收到了一个时间比较紧的业务需求 — 在系统快速搭建一个面板,用图表展示某个产品的销售情况。小K跟 PD 过了一下,决定使用 G2Plot 比较经典的面积图、条形图、环图这三个图表类型。
美丽直观的面积图
面积图是小K要制作的第一个图表,他将使用 堆叠面积图 来展现多个指标的时间变化趋势。
Step1: 引入图表类型
import { StackArea } from '@antv/g2plot';
Step2: 准备数据
G2Plot 的数据源格式是 JSON 数组,数组的每个元素是一个标准 JSON 对象。
下面这份数据描述了 2016年-2018 年,每个地区每季度的销售额。展示空间有限,仅以一个季度为例展示数据样本。
const data = [ { time: '2018季1', area: '东北', value: 190567 }, { time: '2018季1', area: '华北', value: 80122 }, { time: '2018季1', area: '华东', value: 223720 }, { time: '2018季1', area: '西北', value: 157845 }, { time: '2018季1', area: '中南', value: 60343 }, { time: '2018季1', area: '西南', value: 98810 }, ];
Step3: 生成图表 挂载数据源,使用数据中的 'time' 字段作为 X 轴,'value' 字段作为 Y 轴,以 'area' 字段将数据分组并堆叠。
const area = new StackArea( document.getElementById('area-container'), // 获取图表容器 { data, xField: 'time', yField: 'value', stackField: 'area' } // 图表配置项 ); area.render();
Done! 只需要7行代码!AntV 强大的设计体系加持下,可以看到默认渲染出的图表质量已经相当高了。
不过小K是个精益求精的前端,他还要对图表的一些细节做进一步优化:
step4: 加个标题
为图表添加 标题和描述 能够帮助用户更直观的获得图表要表达的主题信息。
const area = new StackArea(document.getElementById('area-container'), { title: { visible: true, text: '地区销售趋势', }, data, xField: 'time', yField: 'value', stackField: 'area' }); area.render();
step5: 坐标轴优化
正待完工之际,PD 和设计师一齐表示他们还有话要说。两人都觉得图表Y轴有优化空间:设计师认为 Y 轴的刻度太密,4 个刻度在视觉上比较美观,而 PD 觉得 Y 轴的标签用千分位显示更标准。面对这些需求,小K表示自己情绪稳定。
const area = new StackArea(document.getElementById('area-container'), { title: { visible: true, text: '地区销售趋势', }, data, xField: 'time', yField: 'value', stackField: 'area', yAxis: { tickCount: 4, label: { formatter: (v) => { return Math.floor(v / 1000) + 'k'; }, }, }, }); area.render();
完工,只需要不到 20行 代码,轻松生成堆叠面积图。
言简意赅的条形图
接下来要制作的第二个图表是 堆叠条形图 ,它将用来展示各产品品类在地区间的销量对比。生成图表的前置步骤跟堆叠面积图一样,我们直接来到核心环节:
引入图表类型:
import { StackBar } from '@antv/g2plot';
生成图表:挂载数据源,配置标题,指定数据中的 'count' 字段作为 X 轴,'area' 字段作为 Y 轴,以 'cat' 字段进行堆叠。一些影响体验的小细节已经默认做好: 图形标签显示空间不够时自动隐藏、根据底色自动调整字体颜色以保证可读性等等。
const bar = new StackBar(document.getElementById('bar-container'), { data, xField: 'count', yField: 'area', stackField: 'cat', }); bar.render();
更换色板:
设计师认为这个图表比较的是品类数据,而不是地区数据,所以在色彩上不应该跟堆叠面积图使用一个色板。没有问题,换色板也很轻松:
color: ['#945fb9', '#1e9493', '#ff9845']
灵活生动的环图
环图 是本次小K要制作的最后一个图表,中心的镂空部分和能够与图形交互的指标卡是它的优势所在。
引入图表类型:
import { Ring } from '@antv/g2plot';
生成图表:指定数据中的 'bill' 字段决定环图的切片大小,'area' 字段决定切片的颜色。
const ring = new Ring(document.getElementById('ring-container'), { data, angleField: 'bill', colorField: 'area', });
加入环图中心的指标卡:
triggerOn 配置项定义了指标卡与图形联动的方式。
statistic:{ visible: true, triggerOn:'mouseenter' } });
至此,小K的图表面板制作完成了,使用 G2Plot 只用了不到 50 行代码。省下的时间学点东西打个游戏撸撸猫不好吗?
G2Plot 一直以开源的方式持续迭代,除了服务蚂蚁金服众多业务之外,还希望这套经过企业级场景打磨锤炼出的图表库能够帮助更多的人解决制作图表的痛点问题。
最后
关于 G2Plot 的更多技术细节、详细进展,请通过以下途径关注我们👇。也欢迎大家来给点点 Star,让更多人看到这个开源项目:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
记一次win server 2012的离线python环境安装(包括whl和setup.py)
目录 前言 python3 exe安装 pip whl安装 setup.py安装 最后 前言 总有某些公司是offline的, 你懂的, 然后用着古老的服务器. 所有有了这种奇怪的需求. 这里分成三个部分来说, 首先是py3的离线安装, 就是大家熟悉的exe安装. 然后是pip使用下载好的whl文件进行库的安装. 最后是使用setup.py进行安装. python3 exe安装 首先来到官网的Windows下载页, 选择合适的版本, 比如我选的py3.7.5的64位exe安装包: 然后就是常规安装, 记得勾选Add... 装完之后打开powershell测试一下: pip whl安装 然后下载必备的lxml文件, 选择对应的版本: 之后pip install whl文件路径即可. setup.py安装 为啥说python-docx典型呢, 因为它只有source, 没有whl文件. 然后进入目录, 运行python setup.py install即可.值得一提的就是, python-docx是依赖lxml的, 所以要先装lxml, 当然, py3的安装肯定是最先的. 最后 喜欢记得点...
- 下一篇
Jenkins CLI v0.0.23 发布
Jenkins CLI 在参加2019 年谁是最受欢迎的中国开源软件投票,如果您已经是 Jenkins CLI 的用户,请点击下面的链接帮忙投上一票。 https://www.oschina.net/project/top_cn_2019#jenkins-cli 如果,您好没有听说或者使用过 Jenkins CLI,欢迎阅读我们的官方文档,以及下面的 v0.0.23 版本更新内容。 Jenkins 国内镜像中心发布后,收到了很多的反馈。鉴于之前的操作步骤相对较多,本次 Jenkins CLI 给出了一键启动国内镜像源的方案: 只要执行命令:jcli center mirror 即可启动镜像源。如果希望使用原有的地址,也非常简单:jcli center mirror--enable=false 更多有意思的玩法,请参考 Jenkins 中文社区论坛。 ? 功能 支持创建插件 (#255)@LinuxSuRen 支持子 shell 命令(#253)@LinuxSuRen 支持启用(或禁用)更新中心镜像源(#251)@LinuxSuRen 增加以键值对的形式触发参数化流水线(#249)@L...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器