一句话:提出组合式示例驱动可视化合成,将任务分解为两个 DSL 合成问题,并用双向程序分析处理不精确中间规约。
从复杂数据集生成有用可视化并不容易,用户不仅需要理解现有可视化库,还要重塑和聚合数据并组合视觉元素。本文提出示例驱动的可视化合成:给定输入数据集和一个展示如何可视化其中很小数据子集的视觉草图,自动生成能可视化整个数据集的程序。由于许多任务同时涉及数据整理与绘图,作者将端到端合成分解为两个不同 DSL 上的子问题;针对分解得到的中间规约必然不精确的问题,采用双向程序分析来缓解复杂性。该技术实现为 Viser。在从在线论坛和教程收集的 80 多个可视化任务上,Viser 在 600 秒内解决 84 个基准;在可解任务中,70% 的期望可视化出现在其生成的前 5 个结果中。
While visualizations play a crucial role in gaining insights from data, generating useful visualizations from a complex dataset is far from an easy task. In particular, besides understanding the functionality provided by existing visualization libraries, generating the desired visualization also requires reshaping and aggregating the underlying data as well as composing different visual elements to achieve the intended visual narrative. This paper aims to simplify visualization tasks by automatically synthesizing the required program from simple visual sketches provided by the user. Specifically, given an input data set and a visual sketch that demonstrates how to visualize a very small subset of this data, our technique automatically generates a program that can be used to visualize the entire data set. From a program synthesis perspective, automating visualization tasks poses several challenges that are not addressed by prior techniques. First, because many visualization tasks require data wrangling in addition to generating plots from a given table, we need to decompose the end-to-end synthesis task into two separate sub-problems. Second, because the intermediate specification that results from the decomposition is necessarily imprecise, this makes the data wrangling task particularly challenging in our context. In this paper, we address these problems by developing a new compositional visualization-by-example technique that (a) decomposes the end-to-end task into two different synthesis problems over different DSLs and (b) leverages bi-directional program analysis to deal with the complexity that arises from having an imprecise intermediate specification. We have implemented our visualization-by-example approach in a tool called Viser and evaluate it on over 80 visualization tasks collected from on-line forums and tutorials. Viser can solve 84 of these benchmarks within a 600 second time limit, and, for those tasks that can be solved, the desired visualization is among the top-5 generated by Viser in 70% of the cases.
@article{paperbot561,
title = {Visualization by example},
author = {Chenglong Wang and Yu Feng and Rastislav Bodik and Alvin Cheung and Isil Dillig},
journal = {Proceedings of the ACM on Programming Languages},
volume = {4},
number = {POPL},
year = {2019},
doi = {10.1145/3371117}
}