简介

交互的目的

在可视化中,为什么要有交互,让用户一次性看到所有数据岂不更简单?
有几个原因导致我们不得不在图表上增加交互:

  • 数据量的增多,使得一次性接收所有信息的负担过重
  • 一些详细信息不需要始终展示
  • 在发现一些数据隐藏的模式、确定一些错误时,需要对数据进行各个维度的观测,综合得出结论

从用户的角度来看,在可视化的场景中添加交互可以带来以下好处:

  • 减轻认知负担
  • 对数据了解更全面
  • 提升效率、降低错误可能

交互带来的问题

所谓的可视化本质上是一种让用户更容易理解数据的手段,交互本身在用户分析数据时会降低同一时刻用户看到的信息量,会降低用户认知的负担,但是同时也会带来很多问题:

  • 交互都是固定的,必须按照设计者的思路,逐步进行。一旦步骤错误,结果不可预估
  • 交互都是隐藏式的,需要提示,需要用去探索
  • 数据越复杂,交互也越复杂,会给用户带来困惑,进而放弃
  • 多个交互存在冲突,容易引起误操作

影响交互效果的因素

除了上面的问题外,在设计交互的时候,交互效果也受限于其他几个因素:

  • 交互方式是否符合用户的直觉
  • 交互反馈是否明确、迅速
  • 交互的一致性
  • 是否是用户不情愿的交互,容易引入错误

正因为交互是必不可少,同时也会带来大量问题,所以我们需要详细的分析一下目前可视化上支持的所有交互类型

交互的分类

可视化中从展示数据到用户观察数据,需要从三个角度思考用户可能存在的交互行为:

  • 数据定义,确定哪些数据展示
  • 视图操作,在不同的视图上操作展示的数据
  • 过程,记录用户的行为,对用户进行提醒

数据定义

确定哪些数据展示,是可视化过程中首先需要思考的问题,作为可视化的设计者来说可以通过编程的方式实现对数据进行处理,但是如果用户希望对数据进行多个维度的分析,对数据有充分的掌控权,就需要提供各种交互方式,让用户自己确定哪些数据展示,哪些数据隐藏,甚至派生出新的数据视图。
在这个过程中常见的交互方式有:

  • 可视化编码,确定数据如何展示
  • 过滤
  • 排序
  • 派生,对数据进行加工(统计)展示汇总数据

这些交互方式的实现多种多样,如何在合适的场景实现合适的交互是非常大的挑战

可视化编码

可视化通过图形的属性映射来展示数据,一般通过位置、颜色、大小、形状作为视觉通道对数据进行映射,我们常见的数据格式加工(数字到字符串、日期格式变化)、布局(调整位置)也归类到这个类别。实现可视化编码的交互有:

  • 通过选择、拖拽字段指定数据字段和图形属性的映射关系

交互概述 - 图1

过滤

过滤主要对数据的量进行调整,可以将局部数据显示在更清晰的视图下,主要的实现方式有:

  • 在图表外面增加筛选框(搜索、选择)
  • 通过图例进行筛选
  • 缩放进行过滤
  • 通过缩略图进行筛选(滑动、点击)

交互概述 - 图2

交互概述 - 图3交互概述 - 图4

框选图形进行筛选和通过图例进行筛选放到操作画布时讨论

排序

排序时另外一种调整数据的方式,好的排序能够让用户更加清晰的对数据进行分析
交互概述 - 图5

在可视化中实现排序的方式:

  • 外部选择排序的字段和方式(升序、降序)
  • 点击坐标轴上的图标

注意:排序有时候会带来问题,例如:存在顺序的分类、时序数据表示 x 轴时,不要按照数据或者其他字段进行排序,以免引起误解。

派生

当输入的数据不满足展示需求时,会对数据进行调整,包括:

  • 聚合
  • 回归
  • 分组统计
  • 补点、行列转换

这些数据调整一般通过编程的方式在可视化前进行,但是越来越多的场景需要用户自己控制如何进行数据加工,以便于更好的理解数据。

视图操作

数据通过图形显示在画布上后,为了了解更多的细节经常会进行下面几种交互:

  • 选中
  • 导航
  • 坐标系调整
  • 重组织视图

选中

选中数据的方式有很多,可以:

  • 框选选中
  • 点击、鼠标hover
  • 拖拽矩形框(brush)
  • 在图例上移动时选中对应的数据,高亮图形
  • 拖拽其他图形对数据范围进行选中,高亮

选中数据时图形会高亮,也会触发过滤、展示细节等进一步操作,也可以使用右键菜单等方式触发其他操作。
交互概述 - 图6交互概述 - 图7

导航

在可视化场景下导航是根据某个字段进行连续的变化,例如:

  • 地图上位置的连续变化,缩略图、相机切换
  • 时间轴上的连续切换,缩略轴、时间轴
  • Pan And Zoom
  • 鱼眼效果

交互概述 - 图8
另外,用户在画布上进行连续操作时,标识节点状态、显示节点详情也在这个分类的范围内

  • 展开、折叠
  • 显示当前鼠标位置的详情

坐标系调整

在可视化中我们所说的坐标系调整主要是指两方面:

  • 同一份数据在不同坐标系下的调整,例如折线图变换成雷达图
  • 同一份数据被分解到不同的坐标系(视图)下展示

交互概述 - 图9
在多个视图下的交互需要同步,例如:

  • 在一个视图上移动鼠标,所有视图都显示 tooltip
  • 框选高亮一个视图上的图形时,所有视图上对应的图形也要高亮
  • 主视图和从属视图,在一个视图上操作,在另一个视图上仅显示选中的数据对应的图形
  • 跨越视图的交互,把一个图形拖拽到另一个视图中

重组织视图

目前越来越多的系统开始支持用户自己决定几个视图,视图如何摆放,但是这已经不仅仅是可视化的范畴,所以在这里不多讨论。

过程

可视化过程中,如果给用户提供了各种各样的交互,如果不对过程进行记录,允许用户查看操作记录、进行前进后退操作、在操作过程中进行引导,用户非常容易在繁杂的交互中不知所措,很容易会进行页面刷新,重新初始化页面。过程的交互有下面几种:

  • 记录,记录交互过程
  • 标识,对数据进行标识
  • 共享和协作,保存某个操作状态,可以分享给其他人
  • 导引信息,告诉新人如何使用,在某些环节中下一步应该如何操作

记录

越复杂的交互场景下,越需要记录用户的操作轨迹,经常有几种应用场景:

  • 用户的关键操作形成视图,可以方便的切换
  • 前进后退功能

交互概述 - 图10

标注

用户可以在图表上添加一些标记
交互概述 - 图11

共享和协作

用户在操作过程中的中间过程可以分享,分享的方式有多种:

  • 书签,每一步创建一个书签,可以进行分享
  • 发布,发布成一个页面

以 datawrapper 为例,这两种功能都提供:https://www.datawrapper.de/

导引信息

复杂的交互需要对用户进行教育,主要考虑三种场景:

  • 新用户的导引
  • 复杂交互的中间过程,需要提示下一步的操作
  • 对具体数据的一些说明,可以进行互动交互

交互概述 - 图12

总结

本章介绍了可视化中的交互目的和各种分类,没有介绍具体的实现细节,在不同的场景需要精心的进行设计,另外也没有讨论一个新的可视化领域: story-telling 中的交互。