可视化叙事的探索与应用

简介: 可视化叙事的探索与应用
编者按:本文是蚂蚁集团 AntV 工程师索丘在 SEE Conf 2022 的演讲内容,包括演讲视频及文字内容,欢迎享用。

大家好,我是来自蚂蚁集团-数字金融技术部的索丘。今天我给大家带来的分享是《可视化叙事的探索与应用》。可视化叙事是最近几年可视化领域的一个热点方向,这次分享我会结合可视化叙事在蚂蚁中的应用和实践,给大家介绍下什么是可视化叙事,以及我们是如何去设计和实现可视化叙事的引擎能力的。


什么是可视化叙事

这种形式大家估计在短视频网站上面也能经常看到,它讲述的是这十个国家近几十年GDP的变化情况,它通过动态排序图的形式来去讲一个复杂的一个数据集,并给我们展示了这种变化过程。这就是一个很典型的叙事应用场景。

当然,我们还能看到很多其他不同的形式,这些都是对可视化叙事的应用。


那么到底什么是可视化叙事, 可视化叙事简单总结下来,主要有以下 2 点特性:

  1. 用动效变化并结合听觉效果,引导用户关注点
  2. 用交互引导用户探索,并发现问题

我们通过动画效果并结合听觉去引导用户关注,让用户去发现数据里面的关键信息和关键的内容。我们还可以通过创建一些交互式的引导,让用户去交互式地探索数据集的一些信息,然后去发现数据集里面的不同点。


为什么要做可视化叙事

在讲为什么要做之前,我们回过头来看我们为什么要做可视化,可视化是我们将一个抽象的数据统通过可视化的形式给到人,让人来形成洞察,并通过洞察形成最后的决策,所以可视化最终的目的是决策。同理可视化叙事也一样,只是我们今天面向的数据不再是一个单维度的数据,我们面对的是一个多维度的复杂数据,我们如何要从多维度的数据里面快速形成洞察,并做出最后决策。这个就是我们今天要探索和深入的命题,而可视化叙事无疑是一种很好的解法。既然我们发现叙事是一种很好的形式,那么我们要如何在工程中设计和应用叙事的能力呢,让叙事能真正在业务中应用起来。先在讲我们的具体的设计方案之前,然后我们先看一下针对叙事的定义,我们今天做的一些尝试和应用。

这个案例讲的内容是什么是微笑定投,以及某段时间之内达成了多少次微笑。 我们通过折线图并加上描点和标注的形式,简单快速的来说明我们的内容。

这个案例通过宏观到微观的视角切换来去讲诉整体的宏观表现 和具体某只基金它在这些行情段里的表现情况,它通过视角的切换来表达整体和局部的关系。

这个案例它讲述的是某个月的收益情况,以及它具体的月收益组成是什么,我这个月到底是亏了还是赚了,还有就是哪个类别对我的收益影响是最大的。

我们通过这种短视频的形式把抽象的数据具象化,然后表达数据信息,这个我们也叫数据视频。所以可视化叙事在实际应用中可以有多种不通的形式。


可视化叙事的设计与实现

在看了上面这些例子之后,我们再回过头来去看,我们是如何设计与实现这些案例的,以及底层的核心能力有哪些,下面我给大家简单介绍我们的设计和实现思路。我们先对叙事的案例做一个简单拆解,以动态排序图为例,它实际上就是多张图连续播发的过程,而每张图它对应的都是一份抽象数据,所以我们本质上就是对数据的连续播放。

声明式图表定义

基于对案例的拆解,我们实现了一套声明式的图表定义,可以简单方便的去定义图表。

Timeline 图表播放

有了图表之后,下一步我们只要把这些图表串联起来,形成连续播放的内容就可以了,基于这个思路,我们在上层实现了 Timeline 的控制,可让图表进行连续播放。这2步就是我们实现一个叙事案例的核心过程,同理我们再来看看其他的案例。

静态卡片和数据视频

数据视频也是一样, 当我们对视频内容拆解后,我们就能发现这个视频它也可以拆成具体的一个个数据帧,每一帧里面它表达的也是一份抽象的数据,而这份数据它背后对应的其实也是一个展示内容,代码形式上面其实就是一个组件。通过对组件的连续播放,就能形成我们看到的样子。


组件 & 变化

看到这里,我想大家一定会好奇更底层到底是怎么实现的。后面我会拿核心的组件和变化给大家简单介绍下更底层的实现思路。

组件

针对组件,我们借鉴了 React 的设计思路,实现了一套可视化组件和生命周期,使用方式基本和 React 一致,不一样是我们是在画布上面,可视化组件我们可以完全类比于 React 组件,  这种形式也可以无缝地和React 结合使用。

变化

变化是叙事的核心,变化的动画处理是我们需要重点去解决和实现的,后面我会以动画为核心简单介绍下我们的动画能力设计和实现。

动画的三个阶段

当我们对动画进行更拆解时,我们会发现动画的变化都可以归类为3个阶段和类型,入场、变化、消失。

1. 入场

2. 变化

3. 消失

识别变化

既然我们已经对动画进行了归类,下面的问题就是我们该如何去识别动画,有了声明式的组件定义之后,我们能很自然地想到利用 DOM Diff 来识别具体变化。diff 的实现和大家理解的过程几乎是一模一样的,这里就不详细介绍了,唯一的不同点是针对删除元素的处理,当一个元素被删除时,我们会等待元素的消失动画执行完后才会从渲染树上拿掉。

动画的声明与定义

当我们识别出具体变化后,我们就可以对每个元素定义动画形式。上面这些就是动态排序图底层动画简化后的过程,我们通过 appear, update, leave 来定义不同阶段的动画行为,然后再通过 Timeline 整体驱动起来。到这里,就基本上给大家演示了整体的设计思路和核心过程了,通过这种形式,我们还可以实现其他不同的变化类型,比如下面例子,更多案例大家可以上我们的官网详细了解。


最后

大家如果对这块感兴趣的话,甚至说想了解更多的内容,可以上我们的官网,也可以关注我们的 GitHub,谢谢大家。

相关文章
|
9月前
|
人工智能 架构师 开发者
破局2025:定义AI数字艺术新生态的十大关键人物
当AI艺术迈入生态竞争时代,十位创作者正重塑未来。他们超越技术炫技,以生态构建、商业创新与跨界影响力开辟新疆域。从乾元AIGC的多维赋能,到林响的数字乡建,再到织梦人的互动叙事,他们定义规则,连接技术与人文,成为AI艺术时代的建筑师与引路人。
|
12月前
|
存储 人工智能 5G
6G来了,智能设备会“脱胎换骨”吗?
6G来了,智能设备会“脱胎换骨”吗?
781 4
|
弹性计算 安全
阿里云服务器快速配置安全组放行端口方法
小编在前天有分享过"阿里云服务器选择和设置自定义安全组配置方法",我们可以看到大部分云服务器商家都开始注重安全方面的设置。我们可以开放需要用到的端口,不用到的端口就直接给不开通或者屏蔽掉,这样可以确保服务器的安全。
11869 5
|
11月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
398 1
|
编解码 安全 芯片
MacOS出现疑难杂症时暴力解决方案
MacBook出现异常发热、风扇狂转、触摸板无响应,数分钟后自动关机。尝试开机显示错误信息。解决方案:重置SMC和NVRAM。重置SMC针对电源管理和散热问题,方法因芯片类型(Apple芯片或T2芯片)不同而异。重置NVRAM适用于Intel芯片的Mac。问题暂时解决,但不确定是否彻底修复。参考苹果官方文档进行操作。
949 1
MacOS出现疑难杂症时暴力解决方案
|
机器学习/深度学习 自然语言处理 数据管理
GraphRAG核心组件解析:图结构与检索增强生成
【10月更文挑战第28天】在当今数据科学领域,自然语言处理(NLP)和图数据管理技术的发展日新月异。GraphRAG(Graph Retrieval-Augmented Generation)作为一种结合了图结构和检索增强生成的创新方法,已经在多个应用场景中展现出巨大的潜力。作为一名数据科学家,我对GraphRAG的核心组件进行了深入研究,并在此分享我的理解和实践经验。
829 0
|
负载均衡 关系型数据库 MySQL
MySQL 主主复制与主从复制对比
MySQL的主主复制和主从复制是两种常见的数据库复制配置方式,各有优缺点和适用场景。以下是对这两种复制方式的详细对比: ### 主从复制 (Master-Slave Replication) **特点:** 1. **单向复制**:数据从主服务器复制到一个或多个从服务器。从服务器只能从主服务器接收数据更新,不能向主服务器发送数据。 2. **读写分离**:主服务器处理写操作(INSERT、UPDATE、DELETE),从服务器处理读操作(SELECT),可以分担读负载,提高系统的整体性能。 3. **数据一致性**:数据在主服务器上是最新的,从服务器上可能会有一定的延迟。 **优点:**
1457 1
|
前端开发 JavaScript 安全
使用React、TypeScript和Ant Design构建现代化前端应用
使用React、TypeScript和Ant Design构建现代化前端应用
983 0

热门文章

最新文章