一种用于多类密度图的声明式渲染模型 (A Declarative Rendering Model for Multiclass Density Maps)

当数据点具有两个quantitative属性和一个categorical属性时,就可以用multiclass maps展示,包括散点图,多维投影,主题地图等。如果点的数量很多,直接绘制会引起overplotting,降低可读性,此时需要进行一些处理,比如alpha blending、数据聚集等,来保持可读性。本文展示了multiclass density maps,对每一种category都计算出2维的histogram,通过分块提高可视化的表达力和可扩展性。在总结相关工作的基础上,作者设计了一种模型,通过声明式的语法来进行multiclass density maps的可视化,并且可以动态调整来得到不同的可视化结果。

作者提出的模型为class buffer model,覆盖了multiclass density maps中很大部分的设计空间。模型分为六个阶段——binning, preprocessing, styling, rebinning, assembly和rendering。

图1 class buffer model的6个阶段

设数据格式为T=(Q1, Q2, C),两个quantitative和一个categorical属性,C共有N个类别。

1. Binning

这一阶段在后端完成。把Q1, Q2的范围划分成W×H的网格,对数据中的类别,计算出N个data buffers,buffer为W×H的矩阵,每一项是落在这一网格内数据的聚集值。

2. Preprocessing

对N个data buffers进行预处理,比如筛掉某一类别的buffer,数据归一化,对数据进行高斯平滑等。

3. Styling

通过添加一些视觉属性,data buffers被转换为class buffers,比如颜色,hatching的角度、scale的选择(linear, log, square root scale)等。这些属性会在后续的阶段中使用,可以用来区分不同的class,也可以用在最后的rendering中。

4. Rebinning

N个W×H的buffers进一步binning,得到M个tiles,每一个tiles对应一个长度为N的data vector,其每一项为buffers中的数据在新的划分下的聚集值。Tiles互不相交且覆盖原先的buffers范围,划分可以是规则的,如长方形,也可以是不规则的,如地理边界。最简单的为pixel tiling,没有进行进一步的聚集,得到W×H个tiles。聚集值可以选择sum, max, min, mean, density等。最后,data vector中的数据映射到[0, 1]范围。

5. Assembly

把多个class buffers合成一个density map,可选的操作有masking, mixing, hatching, generating glyphs。

  • masking: mask是一个W×H的矩阵,每个值为零或非零。每一个tile渲染N次,每一次渲染对应一个class,渲染过程中,color为class buffer在data vector中对应的值用其color scale映射出的颜色,如果mask中的值不为零,tile对应位置设为此color。
  • mixing: 与masking类似,不过最后的color不通过mask进行取舍,而是在整个tiles上进行混合。例如,选择mean,进行的操作就是把多个buffer的color取均值,作为最后的color。
  • hatching: 用均匀分布的线来充满tiles。线的角度由class buffer中的angle属性决定,表示不同的class,线的厚度由data vector里的值决定,表示不同class的数量比例。
  • generating glyphs: 用data vector的值生成glyphs,比如punchcard或bars,放置在tiles边界内最大的长方形中。例如bars,每条bar对应一个class,可以用color表示,bar的高度对应data vector的值。

6. Rendering

利用之前设置的scale和颜色等属性,将上一阶段的density map展示到屏幕中,并生成相应的legends来说明不同class对应的color,scale的映射方式,assembly中的混合方式等。scale通过文字以及等值线的位置来表示,linear scale中的等值线是均匀分布的,log 和 square root的非均匀分布。混合方式通过展现两种class的color来表示。

图2 生成的legends

在此模型的基础上,作者设计了一种声明式的语法,为一种具有可视化语义的JSON格式,与模型的几个阶段对应,具有较强的表达能力。

图3 grammar

利用这个语法,用户可以对生成的multiclass density maps进行动态修改。

图4 生成结果展示

更多示例可见:https://jaeminjo.github.io/Multiclass-Density-Maps/

语法的详细解释:https://github.com/e-/Multiclass-Density-Maps/wiki/Specification

本文提出的class buffer model通过后端的计算与前端的交互,既降低了响应的时间,又可以快速生成丰富的可视化结果。虽然最初数据结构的假设可能比较简单,但还是可以让用户根据各自的需求进行探索,找到合适的可视化形式。

参考文献:

[1] J. Jo, F. Vernier, P. Dragicevic, and J. Fekete, “A Declarative Rendering Model for Multiclass Density Maps”, IEEE transactions on visualization and computer graphics, 2018.

评论关闭。