ARIA · table fallbackAccessibility
Canvas ARIA metadata is paired with a text summary and table fallback.
Graflume · Alpha
Select a time frame to compare changing multivariate points. These tabs come from Graflume's public catalog. Every mode owns runnable data, options, a Quick API, and source-backed feature claims.
Chart family · Default families
Select a time frame to compare changing multivariate points.
motion()graflumemotionChart-specific features
These tabs come from Graflume's public catalog. Every mode owns runnable data, options, a Quick API, and source-backed feature claims.
Motion chart uses runnable data and options to demonstrate stable keys; frame/cumulative/window playback.
StatusLoading
motionstable keysframe/cumulative/window playbackenter/update/exit transitionsgeometry and color tweenseek/scrubber/step/rate/loopreduced motionreverse playbackloop subrangesnamed framesLoading
Row data and zero-copy TypedArray columns share one data contract.
xquantitative | yquantitative | sizequantitative | groupordinal | timeordinal |
|---|---|---|---|---|
| 14 | 38 | 28 | Starter | 2025 |
| 21 | 42 | 28 | Starter | 2026 |
| 20 | 45 | 34 | Starter | 2025 |
| 28 | 49 | 34 | Starter | 2026 |
| 25 | 41 | 31 | Starter | 2025 |
| 34 | 45 | 31 | Starter | 2026 |
| 38 | 57 | 64 | Growth | 2025 |
| 48 | 61 | 64 | Growth | 2026 |
| 45 | 63 | 78 | Growth | 2025 |
| 56 | 67 | 78 | Growth | 2026 |
| 50 | 55 | 70 | Growth | 2025 |
| 62 | 59 | 70 | Growth | 2026 |
| 64 | 72 | 112 | Scale | 2025 |
| 77 | 76 | 112 | Scale | 2026 |
| 72 | 79 | 128 | Scale | 2025 |
| 86 | 83 | 128 | Scale | 2026 |
| 78 | 70 | 118 | Scale | 2025 |
| 93 | 74 | 118 | Scale | 2026 |
| 61 | 88 | 52 | Opportunity | 2025 |
| 77 | 92 | 52 | Opportunity | 2026 |
Browser API
const data = [
{
"group": "Starter",
"name": "Atlas Lab",
"size": 28,
"time": "2025",
"x": 14,
"y": 38,
"z": 7
},
{
"group": "Starter",
"name": "Atlas Lab",
"size": 28,
"time": "2026",
"x": 21,
"y": 42,
"z": 7
},
{
"group": "Starter",
"name": "Beacon Co",
"size": 34,
"time": "2025",
"x": 20,
"y": 45,
"z": 10
},
{
"group": "Starter",
"name": "Beacon Co",
"size": 34,
"time": "2026",
"x": 28,
"y": 49,
"z": 10
},
{
"group": "Starter",
"name": "Civic Data",
"size": 31,
"time": "2025",
"x": 25,
"y": 41,
"z": 12
},
{
"group": "Starter",
"name": "Civic Data",
"size": 31,
"time": "2026",
"x": 34,
"y": 45,
"z": 12
},
{
"group": "Growth",
"name": "Delta Ops",
"size": 64,
"time": "2025",
"x": 38,
"y": 57,
"z": 15
},
{
"group": "Growth",
"name": "Delta Ops",
"size": 64,
"time": "2026",
"x": 48,
"y": 61,
"z": 15
},
{
"group": "Growth",
"name": "Ember Labs",
"size": 78,
"time": "2025",
"x": 45,
"y": 63,
"z": 18
},
{
"group": "Growth",
"name": "Ember Labs",
"size": 78,
"time": "2026",
"x": 56,
"y": 67,
"z": 18
},
{
"group": "Growth",
"name": "Foundry BI",
"size": 70,
"time": "2025",
"x": 50,
"y": 55,
"z": 21
},
{
"group": "Growth",
"name": "Foundry BI",
"size": 70,
"time": "2026",
"x": 62,
"y": 59,
"z": 21
},
{
"group": "Scale",
"name": "Harbor AI",
"size": 112,
"time": "2025",
"x": 64,
"y": 72,
"z": 25
},
{
"group": "Scale",
"name": "Harbor AI",
"size": 112,
"time": "2026",
"x": 77,
"y": 76,
"z": 25
},
{
"group": "Scale",
"name": "Lattice Co",
"size": 128,
"time": "2025",
"x": 72,
"y": 79,
"z": 28
},
{
"group": "Scale",
"name": "Lattice Co",
"size": 128,
"time": "2026",
"x": 86,
"y": 83,
"z": 28
},
{
"group": "Scale",
"name": "Meridian",
"size": 118,
"time": "2025",
"x": 78,
"y": 70,
"z": 31
},
{
"group": "Scale",
"name": "Meridian",
"size": 118,
"time": "2026",
"x": 93,
"y": 74,
"z": 31
},
{
"group": "Opportunity",
"name": "Northstar",
"size": 52,
"time": "2025",
"x": 61,
"y": 88,
"z": 34
},
{
"group": "Opportunity",
"name": "Northstar",
"size": 52,
"time": "2026",
"x": 77,
"y": 92,
"z": 34
}
];
const options = {
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Motion example"
},
"axes": {
"x": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"title": {
"padding": 36,
"text": "Reach score"
}
},
"y": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"offset": 6,
"position": "right",
"title": {
"padding": 58,
"text": "Quality score"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"fields": [
{
"field": "x",
"format": "number",
"label": "X"
},
{
"field": "y",
"format": "number",
"label": "Y"
},
{
"field": "size",
"format": "number",
"label": "Size"
},
{
"field": "group",
"format": "auto",
"label": "Group"
},
{
"field": "time",
"format": "auto",
"label": "Time"
}
],
"title": "Motion",
"trigger": "mark"
}
},
"locale": "en",
"mark": {
"fields": {
"color": "group",
"size": "size",
"time": "time"
},
"options": {
"frame": "2026"
}
},
"padding": {
"bottom": 58,
"left": 30,
"right": 88,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Motion chart uses runnable data and options to demonstrate stable keys; frame/cumulative/window playback.",
"text": "Motion"
},
"width": "container",
"x": {
"field": "x",
"title": "Engagement score",
"type": "quantitative"
},
"y": {
"field": "y",
"title": "Satisfaction score",
"type": "quantitative"
}
};
Graflume.motion('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Motion example"
},
"axes": {
"x": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"title": {
"padding": 36,
"text": "Reach score"
}
},
"y": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"offset": 6,
"position": "right",
"title": {
"padding": 58,
"text": "Quality score"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"fields": [
{
"field": "x",
"format": "number",
"label": "X"
},
{
"field": "y",
"format": "number",
"label": "Y"
},
{
"field": "size",
"format": "number",
"label": "Size"
},
{
"field": "group",
"format": "auto",
"label": "Group"
},
{
"field": "time",
"format": "auto",
"label": "Time"
}
],
"title": "Motion",
"trigger": "mark"
}
},
"locale": "en",
"mark": {
"fields": {
"color": "group",
"size": "size",
"time": "time"
},
"options": {
"frame": "2026"
}
},
"padding": {
"bottom": 58,
"left": 30,
"right": 88,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Motion chart uses runnable data and options to demonstrate stable keys; frame/cumulative/window playback.",
"text": "Motion"
},
"width": "container",
"x": {
"field": "x",
"title": "Engagement score",
"type": "quantitative"
},
"y": {
"field": "y",
"title": "Satisfaction score",
"type": "quantitative"
}
}Play frames from a time field and stable key, with smooth enter, update, and exit transitions.
StatusLoading
playbacksmooth-transitionsLoading
Row data and zero-copy TypedArray columns share one data contract.
xquantitative | yquantitative | sizequantitative | groupordinal | timeordinal |
|---|---|---|---|---|
| 12 | 42 | 20 | A | 2025 |
| 19 | 46 | 20 | A | 2026 |
| 24 | 55 | 85 | B | 2025 |
| 32 | 60 | 85 | B | 2026 |
| 38 | 33 | 55 | C | 2025 |
| 47 | 39 | 55 | C | 2026 |
Browser API
const data = [
{
"group": "A",
"size": 20,
"time": "2025",
"x": 12,
"y": 42
},
{
"group": "A",
"size": 20,
"time": "2026",
"x": 19,
"y": 46
},
{
"group": "B",
"size": 85,
"time": "2025",
"x": 24,
"y": 55
},
{
"group": "B",
"size": 85,
"time": "2026",
"x": 32,
"y": 60
},
{
"group": "C",
"size": 55,
"time": "2025",
"x": 38,
"y": 33
},
{
"group": "C",
"size": 55,
"time": "2026",
"x": 47,
"y": 39
}
];
const options = {
"axes": {
"x": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"title": {
"padding": 36,
"text": "Reach score"
}
},
"y": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"offset": 6,
"position": "right",
"title": {
"padding": 58,
"text": "Quality score"
}
}
},
"height": 620,
"interaction": {
"controls": {
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": true
},
"hover": true,
"playback": {
"autoplay": false,
"field": "time",
"filter": false,
"interval": 1000,
"key": "group",
"loop": false,
"mode": "frame",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"tooltip": {
"fields": [
{
"field": "x",
"format": "number",
"label": "X"
},
{
"field": "y",
"format": "number",
"label": "Y"
},
{
"field": "size",
"format": "number",
"label": "Size"
},
{
"field": "group",
"format": "auto",
"label": "Group"
},
{
"field": "time",
"format": "auto",
"label": "Time"
}
],
"title": "Motion · Playback and transitions",
"trigger": "mark"
}
},
"locale": "en",
"mark": {
"fields": {
"color": "group",
"size": "size",
"time": "time"
},
"options": {
"frame": "2026"
}
},
"padding": {
"bottom": 58,
"left": 30,
"right": 88,
"top": 24
},
"width": "container",
"x": {
"field": "x",
"title": "x",
"type": "quantitative"
},
"y": {
"field": "y",
"title": "y",
"type": "quantitative"
}
};
Graflume.motion('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"title": {
"padding": 36,
"text": "Reach score"
}
},
"y": {
"format": {
"fractionDigits": 0,
"type": "number"
},
"offset": 6,
"position": "right",
"title": {
"padding": 58,
"text": "Quality score"
}
}
},
"height": 620,
"interaction": {
"controls": {
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": true
},
"hover": true,
"playback": {
"autoplay": false,
"field": "time",
"filter": false,
"interval": 1000,
"key": "group",
"loop": false,
"mode": "frame",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"tooltip": {
"fields": [
{
"field": "x",
"format": "number",
"label": "X"
},
{
"field": "y",
"format": "number",
"label": "Y"
},
{
"field": "size",
"format": "number",
"label": "Size"
},
{
"field": "group",
"format": "auto",
"label": "Group"
},
{
"field": "time",
"format": "auto",
"label": "Time"
}
],
"title": "Motion · Playback and transitions",
"trigger": "mark"
}
},
"locale": "en",
"mark": {
"fields": {
"color": "group",
"size": "size",
"time": "time"
},
"options": {
"frame": "2026"
}
},
"padding": {
"bottom": 58,
"left": 30,
"right": 88,
"top": 24
},
"width": "container",
"x": {
"field": "x",
"title": "x",
"type": "quantitative"
},
"y": {
"field": "y",
"title": "y",
"type": "quantitative"
}
}Catalog
The source-controlled catalog maps callable modes in this family and compatibility identifiers to their canonical modes. This table contains executable entries only.
1 modes · 0 compatibility identifiers
| ID | Name | Quick API | mode | mark | renderer |
|---|---|---|---|---|---|
motion | Motion chart | motion() | default | motion | canvas |
Manual
ARIA · table fallbackCanvas ARIA metadata is paired with a text summary and table fallback.
standard · large · ultraStandard, large, and ultra profiles bound rendering work.