Mascot
A Grammar for Expressive and Evolving Data Visualization Design
Build, edit, and refine designs through semantic operations on graphical components.
Why Mascot?
Our vision for Mascot is to broaden the possibilities of data visualization design in terms of both what can be created and how designs can evolve. Our aims are twofold: to unify charts and infographics under a common computational representation, enabling a greater diversity of visualization designs; and to make visualizations live, evolving artifacts that can be continuously explored, modified, and refined, enabling greater flexibility in the design process. Through first-class, manipulable graphical components and semantic operations, Mascot provides a computational foundation for realizing this vision.
A scene-centric approach
Everything is a scene object
In Mascot, a data graphic is not just the output of a specification or rendering pipeline. It is a scene made of semantic objects you can inspect, select, and modify.
Scene hierarchy
Hover to inspect a scene object. Click Encoding or Layout to modify the scene.
Think in Scene Objects
Mascot is designed with two goals in mind: expressive power and high-level abstractions. It supports a wide range of data graphics from statistical charts and information graphics to rich interactive behaviors, while hiding low-level rendering and execution details so you can focus on your design intent.
At the core of Mascot is a grammar that treats marks, collections, encodings, layouts, and axes as first-class semantic objects, automatically managing the relationships between them as your designs evolve. This lets you think in terms of the graphics itself, not the mechanics of rendering, event handling, or dependency management.

Construct expressive data graphics
Mascot builds scenes from primitive marks through semantic operations such as repeat, divide, encode, layout, and align. Each operation creates objects that can be referenced and modified later.
Reactive scene modification
Mascot understands dependencies among semantic objects, so when you change an axis, encoding, layout, or collection, the related marks, guides, and labels automatically update.


Specify interaction with semantic objects
Define transient responses and persistent state in terms of scene objects, and the underlying execution details are handled automatically.

















