移动端数据可视化方案的挑战与设计

简介: 移动端数据可视化方案的挑战与设计
🙋🏻‍♀️ 编者按:本文是蚂蚁集团前端工程师索丘在『支付宝体验科技沙龙暨数金荟』的分享内容,欢迎享用~


前言

什么是数据可视化

在进入正题之前,我们简单看一下什么是数据可视化,数据可视化通俗地讲就是将抽象数据进行数据可视化表达,比如下面的例子,我们把抽象的统计数据进行可视化表达后形成 折线图、柱状图、饼图等,这些都是数据可视化。

当然而除了统计数据外,还有关系数据,比如我们的关系图,他是将关系数据可视化后的结果,这些都是我们所说的数据可视化。

什么是移动端数据可视化方案

在看完什么是数据可视化后,我们再来看看什么是移动端数据可视化,移动端数据可视化说白了就是我们在移动端实现的数据可视化,比如下面的一些场景。

需求永远在预期之外

那么我们今天的主题是《移动端数据可视化方案的挑战与设计》,在进入正题前,我们先看我们在做移动端可视化展现时经常会碰到一些问题。

  1. 这样的圆角提示能实现吗?官网上也没看到有类似的样式

  1. 这样的环图能实现这种选中样式吗?它和你们默认提供的差异也很大

  1. 这样的多层嵌套能实现吗?


这些都是我们在日常工作中经常碰到的场景和案例,当然,实际的问题还远比这些要多,我们碰到的需求永远在预期之外,那么在面临移动端这些复杂且个性的可视化需求时,我们是如何应对和设计的呢,下面我将从以下 4 个方面深入和展开

1. 渲染引擎

渲染引擎是解决核心的图形渲染渲染能力,可视化需要将数据可视化展示出来,所以这个就是离不开核心的渲染能力,而我们在底层实现了一套统一的渲染引擎 Ghttps://g-next.antv.vision/zh/docs/guide/introduce

渲染能力

在渲染引擎层,我们实现了统一的渲染能力,我们可以通过简单且一致的方式,快速实现 UI 的绘制

事件系统

除了 UI 绘制能力外,我们还实现了标准的事件系统

动画系统

动画也是可视化里面一项很核心的功能,我们 G 里也实现了一套完整的动画系统

统一的渲染引擎 FEngine

为了使用方便,我们实现了一套类似浏览器的渲染能力,可以让我们非常方便地构造UI,通过声明式的标签,就可构造任意我们先要表达的样式,而且使用方式和 DOM 基本一直,可以非常方便地上手并使用。

2. 可视化能力

可视化能力是数据可视化中一块核心的功能, 可视化能力就是将数据进行可视化输出的能力,那么在讲可视化能力之前,我们先简单看下可视化流程

可视化的流程用一句话概括就是「将数据映射到图形」的过程。当然在映射过程中,我们还经历了「数据整理」、「数据映射」、「数据补全」、「图像处理」等一些列过程。

而如果我们通过一份 json 数据,来看数据的变化的话,那么我们就能看到如下的数据变化过程

没错,数据映射的核心就是将抽象的数据映射成图形的几何数据(位置、大小,颜色等),而如果我们再来看前面的需求,我们就会发现,大部分的差异都是在 UI 的差异上,所以如果我们将映射的逻辑和 UI 绘制的逻辑分开,是不是就能解决大部分问题呢,基于这个思路,我们底层把数据映射和 UI 界面逻辑分离,通过 逻辑 + UI 的方式形成完整的功能组件

通过这种方式,我们在复用数据映射逻辑的基础上,实现了 UI 的灵活自定义,而我们可视化的核心也变成了丰富的数据映射能力,和简单易用的 UI 构造能力,如下图所示,我们通过统一的数据映射逻辑,就能构造丰富的 UI 样式。

3. 扩展与定制

前面提到,我们通过逻辑和 UI 的分离,实现了 UI 的灵活定义能力,但是当我们面向某个特定场景时,往往会发现某个场景下的 UI 样式有很大的共性,在实际场景中,我们一定希望会有一定的沉淀和复用,而基于逻辑 和 UI 分离的模式,我们可以将一个图表进行原子化的拆解,形成细粒度的原子组件,再通过原子组件的组合模式,实现共性的复用

比如如下的2个场景,他们每个场景的样式风格都很接近,我们就可以通过原子化的拆解,形成单一的原子组件,再通过原子组件组合的方式,去形成完整的可视化图表,我们把这种模式叫做领域方案的定制,当随着我们原子组件的丰富,组合图表的丰富度也将得到大量的提升,而且有了统一的沉淀,我们可以实现统一的升级和迭代。将极大方便我们整体的可视化开发。

4. 跨端能力

最后,再来讲一下跨端,因为今天我们在移动端面临的已经不仅仅只有 H5了,还有小程序、甚至是 Native ,而在实际的业务场景中,我们永远希望一套代码能随处运行,所以,如果建立统一的移动端跨端方式,也是需要我们面对并解决的。

然而,针对移动端的跨端方案,我们可以分成 2 部分去看,「面向 Web 的跨端能力」和「面向 Native 的跨端能力」,因为 web 技术栈 和 非 web 技术栈面临的差异和挑战是巨大的。

面向 Web 的跨端能力

面先 Web 技术栈的跨端方案相对会比较简单,我们只要基于底层的绘图技术,在上面封装统一的实现,让后针对不同的端环境和技术栈进行响应的封装和适配,通过统一的标准就能达到统一的目的

面向 Native 的跨端能力

然而,面向非 Web 技术栈的跨端方案就会变得复杂很多,因为我们底层根本没有浏览器存在,也没有浏览器给我们提供的 canvas、svg、webgl 等这些绘图能力,所以针对 native 的跨端场景上,我们在底层实现类似浏览器 Canvas 的 Native Canvas 来实现 Native 侧的渲染能力。并基于 Native Canvas 我们在上层实现了 同 G 类似的渲染引擎,来实现统一的渲染接口 API,基于统一的底层,我们就可以在上层实现完全的一套代码多端运行。

最后

欢迎关注我们的 github,也非常欢迎找我们进行更深入的交流,谢谢大家

相关文章
|
前端开发 JavaScript 定位技术
一、前端高德地图注册、项目中引入、渲染标记(Marker)and覆盖物(Circle)
文章介绍了如何在前端项目中注册并使用高德地图API,包括注册高德开放平台账号、引入高德地图到项目、以及如何在地图上渲染标记(Marker)和覆盖物(Circle)。
849 2
|
安全 物联网 数据安全/隐私保护
物联网卡在应用于交通运输与物流中常见问题及解决建议
在交通运输与物流领域使用物联网卡期间,常见的问题主要包括网络连接、信号稳定性、设备管理、数据安全性以及套餐流量管理等方面。以下是对这些问题的详细分析和操作建议
|
Java Linux C++
性能工具之 C/C++ 分析工具 valgrind
【5月更文挑战第26天】性能工具之 C/C++ 分析工具 valgrind
433 2
性能工具之 C/C++ 分析工具 valgrind
|
机器学习/深度学习 数据采集 人工智能
基于可图Kolors的皮影戏风格LoRA训练&创作
可图Kolors-LoRA风格故事挑战赛比赛过程心得分享
765 8
基于可图Kolors的皮影戏风格LoRA训练&创作
|
JSON API 数据格式
爱回收获取询价项API接口(爱回收API系列)
爱回收是国内领先的电子产品回收平台,提供便捷的二手设备回收服务。开发者可通过其API接口集成询价功能,提升应用竞争力。该API采用POST请求,需传递app_id、timestamp、sign等参数,返回JSON格式的回收价格信息。示例代码展示了如何使用Python调用此API,获取并打印询价项和回收价格。请确保替换实际的app_id和app_secret,并关注官方文档以保持接口信息准确。
1005 0
|
安全 测试技术
Fiddler是什么软件?如何配置使用?
【10月更文挑战第3天】Fiddler是什么软件?如何配置使用?
777 3
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
483 1
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】PCA 主成分分析算法过程及原理讲解
主成分分析(PCA)的原理和算法过程。
1852 0
|
小程序 算法 物联网
使用ESP32连接腾讯云实现远程控制方法
​大家好,上次给大家分享了如何使用ESP32实现蓝牙通信,今天跟大家聊聊如何使用ESP32连接腾讯云实现远程控制。本次实验用到MQTT协议,同样,我用miropython编写程序实现,最终可以通过腾讯连连微信小程序添加设备来发布主题消息给腾讯云,ESP32负责订阅腾讯云主题消息,当收到某订阅消息时,来控制ESP32设备上LED灯的亮灭。
1245 0
使用ESP32连接腾讯云实现远程控制方法
|
安全 Java
Java TreeSet:基于红黑树的排序集合解析
Java TreeSet:基于红黑树的排序集合解析
510 0