G2 是一套面向常规统计图表,以数据驱动的高交互可视化图形语法。

经历了为期半年的大规模底层重构和开发迭代,G2 4.0 终于和大家见面了。作为继 2017 年 11 月 22 日 G2 3.0 正式开源发布以来 G2 的第二次大版本发布,4.0 版本仍坚守着『打造数据驱动的高交互图形语法』的初心,在图形语法的基础上,新增了交互语法,同时在产品的功能、体验、易用性和灵活性等各个方面进行了全面提升。

全新的 4.0

首先欢迎一波 star ~~~~

严格意义上来说,这并不是一次重构,而是一次大规模的重写,我们自底向上,从代码到文档,构建了全新的 G2。

全面拥抱 TypeScript

我们使用 TypeScript 重写了 G2 以及其相关的所有模块,并提供了完整的类型定义文件

绘图引擎升级,多引擎切换

G 是 AntV 旗下一款易用、高效、强大的 2D 可视化渲染引擎,提供 Canvas、SVG 等多种渲染方式的实现。

随着 AntV 底层渲染引擎 G 4.0 的发布,为 G2 4.0 带来了Canvas、SVG 多渲染模式支持、局部刷新、动画体验增强等多种利好。

更新机制引入

在 G2 之前的版本中,数据初始化和数据更新的流程本质上一样,区别仅在于后者需要把之前的图形清理掉,所以在数据更新之后,图形元素都是重新创建的,与数据更新前的图形元素无法进行关联,这就对动画、以及交互的一致性造成了影响。所以我们在 4.0 中引入了更新机制,包括:

  1. Geometry 的数据更新,为此我们引入了 Element 概念;

  2. 可视化组件的更新。

示例一:在图表发生数据更新后,数据更新前的图形元素并没有被销毁,我们仍然可以对更新前取到的 Element 实例进行操作。

示例二:更新机制的加入,细化了数据的处理流程,为图表的细粒度动画提供了基础。以下动态条形图,当每次数据发生更新时,坐标轴文本 Axis、图形文本标注 Label、几何图形 Geomtry等图表元素,均可在更新阶段定制对应的动画。

可视化组件体系升级

结合 AntV 下各个产品:G2、F2、G6、L7 的需求,我们重新设计了图表组件,形成了功能更强,自由度更高,扩展性更好,面向交互的可视化组件体系。在兼容 3.x 功能的基础上,增加了动画、约束性布局以及交互等功能。

图例及坐标轴文本自适应 Tooltip 坐标系自适应

强大的 View 模块

View 是拥有独立数据源,并且能够绘制多个图形的容器。相比于 3.x,4.0 中 Chart 和 View 的职责发生了一些变化:View 是 G2 的画布容器,负责子 View、几何标记以及可视化组件的管理,而 Chart 是继承 View,直接暴露给开发者的便捷使用入口,在 4.0 中,用户可以根据自己业务的定制需求,使用 View 去开发个性化的数据多维分析图形。另外我们还支持了 View 嵌套以及组件自动布局。

支持各种场景下的自动布局:数据更新、图表尺寸变化、坐标系变换以及图表组件位置更新等。

全新的交互语法

G2 4.0 开始,我们从底层的 G 4.0 开始重构事件的实现,可视化组件层统一接口和事件机制,G2 层 Geometry 拆分出 Element 以适应新的交互机制,当这一切就绪,交互语法的新篇章终于开启。

我们将交互行为拆分成一个个交互环节,而每个交互环节又由一个个触发对象和反馈对象组成,通过对触发对象和反馈对象的拼装组合,我们就可以搭建出各种各样的交互行为,而交互行为之间又可以进行叠加使用。

以鼠标 hover 图形,图形高亮为例,该交互行为由两个交互环节组成:

  1. 交互环节 1:鼠标滑入图形元素,图形元素高亮

  2. 交互环节 2: 鼠标滑出图形元素,图形元素恢复原始状态

对以上描述,我们可以分析出每个交互环节的触发对象、触发事件、反馈对象以及结果,如下:

于是我们就可以使用交互语法进行组装:

通过这一套交互语法,我们为 G2 组装配置了丰富的交互行为,方便用户快速上手使用。

将来我们将会尝试让交互语法会更加自然化,让用户可以通过更加符合文法的方式进行使用。

细粒度的动画

得益于更新机制的引入,G2 4.0 的动画配置更加细粒度,在原有 Geometry 动画的基础上,用户还可以对图表组件(Axis、Annotation 等)及 Label 文本标注进行动画配置。于此同时,我们还优化了各个 Geometry 的内置动画。

『暗黑』主题

在图表主题上,G2 4.0 做了一次设计的升级,同时新增了 'dark' 主题。

灵活的扩展机制

G2 4.0 重新设计并统一了各个核心模块的扩展机制,相比 3.x 版本,粒度更新,机制更灵活,用户可以基于最核心的模块,按需加载需要的功能模块,包括自定义 Shape、主题、交互、组件、动画等,具体使用请阅读按需引用教程。

除了以上变化之外,我们还对 API 进行了大量的优化,在最大程度兼容 3.x 语法的基础上,提供了对用户更加友好,更易理解的函数命名以及更合理的配置项结构,同时还对教程及 API 文档进行了重构。欢迎访问 G2 官网了解更多细节内容。

如何升级

为了尽可能简化升级,G2 4.0 保持了最大程度上的兼容,但是仍然有一部分 breaking change 需要注意,具体请参考 G2 4.0 升级指南。

最后

非常感谢您的耐心阅读,如果你对 G2 感兴趣,可以通过以下渠道关注我们:

  • GitHub:https://github.com/antvis/g2

  • 官网:https://g2.antv.vision/

相关链接

  • G2 4.0 升级指南

  • 可视化的交互语法

  • AntV 架构演进-G2 篇

蚂蚁金服数据可视化引擎 G2 4.0 正式版发布!相关推荐

  1. 蚂蚁金服开源地理可视化引擎 L7 2.0 正式版来了,让地图动起来

    github地址:https://github.com/antvis/L7 中文文档地址:https://github.com/antvis/L7/blob/master/README.zh-CN.m ...

  2. 蚂蚁金服新一代数据可视化引擎 G2

    新公司已经呆了一个多月,目前着手一个数据可视化的项目,数据可视化肯定要用到图形库如D3.Highcharts.ECharts.Chart等,经决定我的这个项目用阿里旗下蚂蚁金服所开发的G2图表库. 官 ...

  3. 共享学习:蚂蚁金服数据孤岛解决方案

    如果有A.B.C三位同学,他们各自手上有10.15.20块钱,这时需要在相互不知道对方有多少钱的情况下,不借助力第三方来计算三个人一共有多少钱.请问这时候,我们如何实现呢?--这,就是最经典的秘密共享 ...

  4. 蚂蚁金服智能推荐引擎解决方案与实践

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...

  5. 蚂蚁金服智能推荐引擎解决方案与实践 1

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...

  6. 数据流被污染?数据质量不高?蚂蚁金服数据资产管理平台了解一下

    今年年初,蚂蚁金服ATEC城市峰会在上海举办.金融智能专场分论坛上,蚂蚁金服数据平台部高级数据技术专家李俊华做了主题为<蚂蚁金服数据治理之数据质量治理实践>的精彩分享. 演讲中,李俊华介绍 ...

  7. Wonder 1.0 正式版发布,WebGL 3D引擎和编辑器

    介绍 Wonder 1.0正式版发布了.免费.开源,不用注册,直接打开在线编辑器即可使用. Wonder 是 web 端 3D 开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态.Wo ...

  8. 服务全球近 9 亿人后,蚂蚁金服的技术开放进入 3.0 时代

    小蚂蚁说: 2018年9月21日下午,一年一度的蚂蚁金服ATEC金融科技开放峰会顺利召开.围绕"预践未来数字金融",来自蚂蚁金服.花旗.麦肯锡.建行.DBS.光大.中国外汇交易中心 ...

  9. 2022最新蚂蚁金服Java岗面试题库(整理版)

    前言 由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目.笔者面的是阿里的Java研发工程师岗,面试流程是4轮技术面+1轮hr. 蚂蚁金服关于spring部分面试问题: 1.Spring ...

最新文章

  1. python使用matplotlib可视化、使用rcParams参数调整可视化图像中线条宽度、线条类型、文本字体、字体大小、字体颜色、字体类型、文本颜色等
  2. python控制结构(二)_Python程序控制结构---2
  3. python算法很难吗_python 机器学习难吗?
  4. tornado环境搭建
  5. 2017年秋招-广联达面试及思考
  6. oracle未授权sql查询,【oracle使用笔记3】sql查询遇到的若干问题总结
  7. DND(darmstadt noise dataset)数据集的坑
  8. spring boot单元测试(转)
  9. 人生不值得,我在用python.1_关于python
  10. android 按键流程及映射
  11. java saxreader 字符串_解析XML文件(字符串)的方法-----SAXReader
  12. 帮助用户连接网络打印机工具
  13. 《掌控习惯》学习总结
  14. python 3维正态分布图_三维正态分布图
  15. 电脑应用·桌面设置面面观·各取所需(快速启动任务栏 右移问题)
  16. runauto.. 病毒斗争记
  17. 【数据结构】栈的实现与简单应用
  18. 『 kaggle』kaggle-DATA-SCIENCE-BOWL-2018(U-net方法)
  19. 网站是不是php是什么意思,php网站是什么意思?
  20. 百度地图修改底图样式

热门文章

  1. devops开发运维一体化_进阶 | 中国电信系统集成公司:100% 应用 DevOps 理念,做好企业级行业应用...
  2. centos6下如何安装mysql服务_CentOS6下安装MySQL数据库服务
  3. 矩阵sum_Matlab-sum与cumsum函数
  4. java实现定时任务 schedule_Java定时任务的三种实现方式
  5. eclipse支持html,让eclipse完全支持HTML/JS/CSS智能提示
  6. 蚁群算法python_想要学习启发式算法?推荐你看看这个价值极高的开源项目
  7. 拒绝用户“root”@“localhost”的访问(使用密码:yes)_使用PHP和Github Webhook实现自动部署
  8. vue4 跳转外部链接_vue跳转到外部链接
  9. 鸿蒙第三代手机,荣耀Magic 3最新确认,鸿蒙系统+双6400万,最期待的荣耀来了
  10. 搜索图片的干货网站?