什么是 Glyph?

今天要和大家分享的是基于 glyph(字形)的可视化理论。但是对于 glyph 这个词大家可能比较陌生,到底什么是 glyph 呢?其实 glyph 的原意是活版印刷术中的概念。我们知道活字印刷是我们老祖宗的四大发明之一,把每个字形做成一个方块图章,灵活的组合这些图章就可以排版出任何印刷内容,远远优于专版专印的雕版印刷。这个技术传到西方以后,每一个排版最小单元就被叫做 glyph, 翻译为字形。

440px-Garamond_type_ſi-ligature.jpg

Glyph 在可视化中涵义和他的原生意义非常契合,由于在可视化中翻译成“字形”不太形象,目前也没有特别官方的翻译,所以我们直接使用英文单词。一个 glyph 是指组成整个可视化的最小视觉对象,这个对象既可以单独用来描述一条数据记录,也可以被构建起来去描述数据集的一部分。

A glyph is a small visual object that can be used independently and constructively to depict attributes of a data record or the composition of a set of data records. [1]

比如以下这个案例展示了医学研究中精子运动的状态的可视化[2]。案例中用一个 glyph 来代表一个精子在某个时间点上的状态,而用多个 glyph 的组合来表示一次观测的整体状态。
Screen Shot 2019-06-25 at 12.15.36 PM.png
Glyph 结构图:展示了 glyph 是如何将 20 个参数编码进去的。这些参数有很多都是医学上的专业参数。

Screen Shot 2019-06-25 at 12.15.59 PM.png
基于 glyph 的可视化可以对视频进行概括。案例中将多个度量通过时间和空间上下文进行转换。

另一个案例是一个实时的体育赛事状态可视化[3]。通过对具体事件(比如哪位球员在什么位置做了什么动作,产生了什么结果)设计 glyph,再把这些事件 glyph 放置到整体布局的时间线上,对实时的比赛情况变化进行了展示。

Screen Shot 2019-06-25 at 2.32.35 PM.png

基于 Glyph 的系统结构设计

其实 glyph-based 的可视化系统,基本结构都很相似。以最小原子性的可视化映射单位为标记(Mark),将这些承载映射的标记通过一定的内部布局约束打包起来,就形成了一个 glyph。每个 glyph 反映了一条数据信息,由于映射是动态的,所以数据不同每个 glyph 的呈现也会有区别。在可视化图表的层面,把这些 glyph 通过约定的布局规则排列起来,就形成了自定义的图表。

term-illustration.png
Charticulator 的结构设计

现在的可视化工具,从表达力上,由低到高可以分为四类:

  • 模板编辑型(Template Editors):Excel、Power BI、plotly 等
  • 缓行配置型(Shelf Configuration):Tableau、polestar 等
  • 交互创作型(Interactive Authoring):Data Illustrator、Lyra、iVisDesigner 等
  • 自主编码型(Custom Code):D3、G2

其中,glyph-based 可视化系统使用最多的场景是交互创作型工具,应为 glyph-based 天生具有高灵活性的特质,很适合做定制化图表、信息图表。

交互创作型工具(Interactive Authoring)有很多必备的能力,比如:

  • 数据映射(Data Mapping)
  • Glyph
  • 分割与重复(Partition & Repetition)
  • 图形连接(Linking)
  • 定义布局(Layout)

我们今天要介绍的一款工具 Charticulator[4],就是在 Linking 和 Layout 上做了很多探索和优化的。

系统案例:Charticulator

fast-forward.gif
Charticulator 快速制作和弦图

Charticulator 是微软的一款可视化工具,可以通过交互创作的方式制作图表类型模板,然后导入 Power BI 去支持扩充其图表类型。

在 Charticulator 中,用户通过定义一个 glyph 和其中的标记映射条件,并在画布中创建布局规则和连接规则,来快速制作可视化图形。一张复杂图表,通过代码或设计工具定制可能要非常长的时间,而在 Charticulator 里面 2 分钟内就可以搞定。

Screen Shot 2019-06-25 at 4.49.51 PM.png

作为专门加强了布局(Layout)和连接(Linking)的工具,Charticulator 在一些特定的复杂图表制作上能够大大提高效率。我们可以看一下官方演示视频,感受一下这个工具的效能。

U9Cg1cf4DfEocUZYj1N_229547404807___hd.mp4 (8.68MB)视频也可在官网首页查看

局部规格定义

Charticulator 实现其布局定义使用的是局部规格定义方法(partial specifications)。下面通过三个对比案例来说明细节定义的不同对可视化图形结果的影响。

Screen Shot 2019-06-25 at 5.15.38 PM.png
glyph 内部映射 + 自定义 layout 规则

Screen Shot 2019-06-25 at 5.15.51 PM.png
变更 layout 规则
Screen Shot 2019-06-25 at 5.16.01 PM.png
取消 glyph 内部的宽高映射

坐标系

Charticulator 支持很多预设的坐标系来做整体布局,比如:

  • 笛卡尔直角坐标系
  • 极坐标系
  • 曲线坐标系
  • 手绘自定义坐标系

基于约束的布局算法

虽然定义了局部规格,但是目前并没有直接可以将规格定义解析为具体布局的方法,于是 Charticulator 系统研发了自己的解决方案:基于约束的布局算法(Constraint-based layout algorithm)。

这个方法首先将局部布局规格转化为可以量化和计算的数学表达式,作为必须符合的约束条件。

Screen Shot 2019-06-25 at 5.24.58 PM.png

然后,使用了定制的解算器,针对每一个图形元素的布局属性,在约束条件和当前位置中进行平衡,求解出合适的值。系统使用了 WebAssembly 进行性能优化。

Screen Shot 2019-06-25 at 5.25.12 PM.png

更多可能

除了制作自定义可视化图形,Charticulator 还有很多的潜力。比如,在图表和图表之间进行连接(linking)、将 glyph 本身作为一个标记,制作更上一层的嵌套 glyph,等等。

感兴趣的读者可以去其官方网站了解更多:charticulator.com

思想方法

无论是 glyph-based 的理论还是 Charticulator 的实现,能启发我们更多的是其中的思想方法。我们在做可视化系统架构设计的时候,甚至其他系统设计的时候,是可以套用这种设计模式的。比如图可视化场景,天然地就需要着重解决节点样式定制和图布局的问题,glyph-based 的思路值得借鉴。


本专题中部分内容编辑自 Donghao Ren论文Slides

[1] E. Maguire, P. Rocca-Serra, S. Sansone, J. Davies and M. Chen, “Taxonomy-Based Glyph Design—with a Case Study on Visualizing Workflows of Biological Experiments,” in IEEE Transactions on Visualization and Computer Graphics, vol. 18, no. 12, pp. 2603-2612, Dec. 2012.

[2] Duffy, B., Thiyagalingam, J., Walton, S., Smith, D. J., Trefethen, A., Kirkman-Brown, J. C., … & Chen, M. (2013). Glyph-based video visualization for semen analysis. IEEE transactions on visualization and computer graphics, 21(8), 980-993.

[3] Legg, P. A., Chung, D. H., Parry, M. L., Jones, M. W., Long, R., Griffiths, I. W., & Chen, M. (2012, June). MatchPad: interactive glyph‐based visualization for real‐time sports performance analysis. In Computer Graphics Forum (Vol. 31, No. 3pt4, pp. 1255-1264). Wiley/Blackwell (10.1111).

[4] Ren, D., Lee, B., & Brehmer, M. (2018). Charticulator: Interactive construction of bespoke chart layouts. IEEE transactions on visualization and computer graphics, 25(1), 789-799.