G2 1122 发布:脚踏实地,仰望星空

G2 是蚂蚁集团 AntV 团队推出的一套可视化语法,专注于创造基于网页的可视化。G2 在今年的 3 月 21 日和 AVA 团队一起发布了 5.0 正式版本,其专业、简介的语法帮广大开发者解决了大大小小的可视化难题。接下来我们来看看 G2 栈团队近一年来的工作,以及对未来的展望。

从心出发,焕然一新

首先给大家介绍一些让 G2 栈看上去焕然一新的工作,它们也是最容易被开发者感知的工作。

Ant Design Charts 2.0

在社区同学的踊跃参与下,我们基于 G2 5.0 版本推出了 Ant Design Charts 2.0:一个 React 的图表库。除了透出 G2 5.0 的所有能力之外,我们还对图表的丰富度(包含 34+ 图表)和交互等进行了加强。目前 Ant Design Charts 2.0 已经在蚂蚁内部多个业务落地,欢迎大家试用。

主题

在更新了 G2 栈家族成员之后,我们也和设计师合作对图表的"皮肤"进行了升级。其中最大的变化就是推出了新的离散色板,该新色板除了更自然、具有科技感之外,也解决了老色板对比度不够、"模糊"等问题。同时我们也对图表中元素的间距和颜色进行了调整,使得图表包含更清晰的信息层级。

另一发面,在支持了新的 Light 和 Dark 主题之外,我们也推出了新的 Acadamy 主题,用于偏学术的场景。

官网

为了让开发者能更好地了解 G2 的能力和学习 G2 的使用方式,我们也对官网进行了优化。首先是引入了交互式文档的概念,让官网文档中的代码块都可以运行的,从而看到最后的可视化效果。

其次是给官网的案例增加了 Spec 切换按钮,可以一键看到图表的 Spec 配置。最后是基于 5.0 的主题增加了主题构建器,可以根据自己的场景自定义主题。

能力稳定,锦上添花

除了上述"吸睛"的新特性之外,我们也做了一些更务实的工作。因为我们知道,对于一个新版本来说,只有稳定的能力,才能让开发者安心。当然,我们同时也在持续迭代满足内外部开发者一些强烈的诉求。

Bug 和 Issue

能力稳定最重要的指标就是 Bug 要少。为了达到这个目标,我们积极响应 issue,尽量保证大部分 issue 的回复时间是在 1 天以内。最后,在社区同学的热心贡献下,我们修复了大量内存泄漏、tooltip 不符合预期以及交互状态失效等 Bug,大大提高了 G2 5.0 的使用体验。

自动布局

组件(坐标轴、图例和滑动轴等)的布局和展示一直是可视化中的难点和痛点。在 4.0 中,需要对组件绘制两次,然后基于此调整坐标系,才能得到最后的布局结果,这会造成一定性能损失。而 5.0 采用的布局算法,只用绘制一次组件,同时缓存计算结果,减少了这部分的性能损失。另一方面,也优化了在多个组件的存在的情况下的布局效果,比如多个图例、多个坐标轴等。

交互增强

交互是可视化中很重要的一部分,我们对此也进行了优化。第一,对 4.0 版本拥有的交互进行了全面的升级,提高了自定义的能力,比如支持自定义 brushFilter 中 brush 的样式,以及支持改变大小等。

第二,通过 chart.onchart.emitAPI 暴露了获得和设置交互状态的能力,大大降低了实现图表联动的成本。

更多 Mark 和图表

为了满足更丰富的场景,我们也推出了更多 Mark,Shape 以及 Data 等,用于绘制更多的图表,比如 Density、Venn、Liquid 和 Trail 等。

架构优化,蓄势待发

除了功能和 Bug,我们投入了大量的精力去优化架构,比如测试环境、各个模块的接口等。我们坚信,合理可靠的架构是稳定性和未来蓬勃发展的坚实基础。

按需加载

随着 G2 的功能不断增加,为了解决随之而来的包大小的问题,我们推出了按需加载的功能。代码整体的架构是 Runtime + Lib 的模式,Runtime 负责调度 Lib 渲染图表,而 Lib 提供一系列可视化组件。

在这样的设计下,可以通过按需使用图表对应的 Lib 来实现按需加载,比如在只绘制简单图表的时候使用 Core Lib。

稳定测试

稳定测试是持续集成的关键,也是重构代码时候的保障。为了减少新增测试的成本,提高测试的可解释性、独立性和覆盖率,我们在 5.0 版本中引入了基于 node-canvas 的本地截图测试。但是我们发现 node-canvas 在不同平台存在安装困难,截图不一致的问题,在替换 playwright 失败之后,我们选择了 JSDOM 使得测试跨平台稳定。该测试环境也用于了 AntV 其他生态,比如 G6Component

扩展性

为了最大程度把灵活性暴露给用户,G2 5.0 中所有的可视化组件的都是可自定义的。而今年,在保证上层 API 不变的情况,我们对 Shape、Coordinate 等可视化组件的接口进行了调整,让其变得更加简洁,也能暴露更多的内部计算属性和状态。

面向未来,生态繁荣

从某种意义上讲,能力稳定和架构优化都是面向未来的,因为在这两者的基础上 G2 才能去探索更多的方向,也能让更多的人使用 G2 和参与 G2 的贡献,促进 G2 生态的繁荣。

3D

得益于 G2 底层依赖的强大的渲染引擎 G,G2 迈出了 3D 可视化的尝试,目前已经支持了 3D 条形图、3D 散点图等 4+ 的 3D 图表,目前放在 g2-extensions 里面。期望之后能满足 3D 大屏或者科学可视化的需求。

AVA

AVA 是 AntV 旗下的一个智能可视化图表库。今年 AVA 团队和 G2 团队"强强联手",将 AVA 的智能能力通过 G2 的复合 Mark 推出,包含了 Auto 和一系列 Insight Mark,目前放在 g2-extensions 里面。

社区运营

为了让更多开发者看到 G2 栈的能力,以及参与到 G2 栈的建设中,我们也在社区运营方面做了不小的努力。首先是围绕 G2 写了一系列文章,包含自定义教程、算法可视化和数据新闻等,其中的亚运可视化在云栖大会上进行了分享,其余文章在微信平台一共达到了 70w+ 的阅读量。

另一方面,我们也开启了 AntV OSCP 计划:通过发布一系列难度各异的任务,来吸引开发者来贡献。截止到目前,已经有 5+ 外部贡献者参与了 G2 的开发。

国际化

最后,为了使得 G2 能走出国门,让更多国外的用户使用 G2,我们也开始国际化相关的尝试。除了要求代码注释,commit 尽量为英文以外,我们也开始逐步翻译官网的文档,目前已经完成了文档分类下所有文章的翻译,后续会继续对 API 和配置分类下的文章进行翻译。

最后

这就是 G2 栈团队最近一年的主要工作了,也是本届 1122 G2 栈对外的发布内容。欢迎大家使用 G2 栈产品,并且以任何形式来参与开发,让我们一起让它们变得更好,实现我们的愿景:在数据的海洋里获得视觉化思考的能力!

相关推荐
吕彬-前端3 分钟前
使用vite+react+ts+Ant Design开发后台管理项目(五)
前端·javascript·react.js
学前端的小朱6 分钟前
Redux的简介及其在React中的应用
前端·javascript·react.js·redux·store
guai_guai_guai15 分钟前
uniapp
前端·javascript·vue.js·uni-app
bysking1 小时前
【前端-组件】定义行分组的表格表单实现-bysking
前端·react.js
王哲晓1 小时前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
fg_4112 小时前
无网络安装ionic和运行
前端·npm
理想不理想v2 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云2 小时前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
微信:137971205872 小时前
web端手机录音
前端
齐 飞2 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb