Declarative Interaction Design for Data Visualization

Grammar of Graphics (Vega) for declarative static semantics + FRP (Flapjax) for declarative temporal!

We investigate the design of declarative, domain-specific languages for constructing interactive visualizations. By separating specification from execution, declarative languages can simplify development, enable unobtrusive optimization, and support retargeting across platforms. We describe the design of the Protovis specification language and its implementation within an object-oriented, statically-typed programming language (Java). We demonstrate how to support rich visualizations without requiring a toolkit-specific data model and extend Protovis to enable declarative specification of animated transitions. To support cross-platform deployment, we introduce rendering and event-handling infrastructures decoupled from the runtime platform, letting designers retarget visualization specifications (e.g., from desktop to mobile phone) with reduced effort. We also explore optimizations such as runtime compilation of visualization specifications, parallelized execution, and hardware-accelerated rendering. We present benchmark studies measuring the performance gains provided by these optimizations and compare performance to existing Java-based visualization tools, demonstrating scalability improvements exceeding an order of magnitude.

See video and UIST 2014 paper.

For our own production code, we've been combining RxJS ~E-FRP with D3 charts.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Popped on my google scholar

Popped up on my google scholar feed also. Is this really FRP or just Rx again?

Edit: never mind, it seems to be the right interpretation of FRP. Glad to see them drag out interactors again. They also have some weird UDF scheme that kind of makes up for not being general.


I guess what I'm excited about here is that dataflow is increasingly entering the data toolchain. We have it in the large -- all the big data pipelines -- and this is in the small.

The problem being tackled is tricky. Before, analysts would interact with their charts by issuing configuration modifications in the REPL. With systems like Shiny and Bokeh, they're switching to emitting scripted charts to the browser, but the underlying programming model is not geared to quickly scripting definitions in the same way as the grammar of graphics. Systems like Tableau try to move it all into the visual tier, and this starts getting at a semantics for it.

Dataflow is becoming

Dataflow is becoming pervasive in the data toolchain. However, I never really thought I would see FRP here, and none of the existing incremental systems (Spark) are even really related. And this is still very small data.

Their language looks more like SuperGlue than Flapjax.