Mascot

A Scene-Centric Grammar for Expressive Data Graphics

Build expressive data graphics by manipulating scene objects.

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.

Scene The chart is a hierarchy of editable objects, not a pile of anonymous graphical primitives.
hover objects
Interactive scene object diagram
Encoding: topic color Layout: ThemeRiver

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 a rose chart step by step
A circle mark used as the first construction step for a rose chart

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.

repeatdividedensifyencodelayoutalign

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.

An animation showing a chart deconstructed into semantic objects, then updating dependent marks, guides, labels, and gridlines when the x-axis object changes
An animation showing a selected scatterplot mark stored as interaction state, then reused when hovering another mark to draw a comparison

Specify interaction with semantic objects

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