Graflume · Alpha
Scatter matrix · Basic implementation · Common features
Compare every pair of quantitative dimensions as scatter cells with diagonal histograms. Start with only the required data and family encoding. Expand the code to run the same example. Use the tabs to compare header, tooltip, theme, legend, highlight, callout, selection, view controls, and accessibility one feature at a time.
Chart family · Advanced families
Scatter matrix
Compare every pair of quantitative dimensions as scatter cells with diagonal histograms.
- Quick API
scatterMatrix()- Browser snapshot
graflume/complete- mark
scatter-matrix- Presets
- 1
Basic implementation
The smallest runnable chart
Start with only the required data and family encoding. Expand the code to run the same example.
Basic example
Compare every pair of quantitative dimensions as scatter cells with diagonal histograms.
StatusLoading
minimal-implementation
Loading
Basic example · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Common features
Features shared by every chart
Use the tabs to compare header, tooltip, theme, legend, highlight, callout, selection, view controls, and accessibility one feature at a time. Hover over a data mark. On supported charts, move the pointer along the axis to see the nearest value. All exact values are available in the table below.
Header
Add a chart title and supporting description inside the visualization.
StatusLoading
header
Loading
Header · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"title": {
"subtitle": "Scatter matrix uses runnable data and options to demonstrate up to eight dimensions; explicit dimension order.",
"text": "Scatter matrix"
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"title": {
"subtitle": "Scatter matrix uses runnable data and options to demonstrate up to eight dimensions; explicit dimension order.",
"text": "Scatter matrix"
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Tooltip
Reveal exact values from a mark or axis position. Authors can choose locale-aware date/time styles and a time zone with declarative options.
StatusLoading
tooltip
Loading
Tooltip · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"fields": [
{
"field": "speed",
"format": "number",
"label": "Speed"
},
{
"field": "quality",
"format": "number",
"label": "Quality"
},
{
"field": "cost",
"format": "number",
"label": "Cost"
}
],
"title": "Scatter matrix · Tooltip",
"trigger": "mark"
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"fields": [
{
"field": "speed",
"format": "number",
"label": "Speed"
},
{
"field": "quality",
"format": "number",
"label": "Quality"
},
{
"field": "cost",
"format": "number",
"label": "Cost"
}
],
"title": "Scatter matrix · Tooltip",
"trigger": "mark"
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Theme
Apply the current built-in theme from the selector and update every active example together.
StatusLoading
theme
Loading
Theme · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"theme": "graflume-light",
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"theme": "graflume-light",
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Legend
Explain the visual meaning of layers, categories, or continuous values.
StatusLoading
legend
- Legend:
legend · categories · name
Loading
Legend · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"legend": {
"field": "name",
"interactive": true,
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "categories",
"orientation": "horizontal",
"position": "bottom",
"title": "Name",
"visible": true
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"legend": {
"field": "name",
"interactive": true,
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "categories",
"orientation": "horizontal",
"position": "bottom",
"title": "Name",
"visible": true
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Highlight
Emphasize a representative datum or spatial position to guide inspection.
StatusLoading
highlight
- Point and range highlights:
highlights[] · datum · speed
Loading
Highlight · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "speed",
"type": "datum",
"value": 74.63
}
}
],
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "speed",
"type": "datum",
"value": 74.63
}
}
],
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Callout
Show an explanatory callout with automatic collision avoidance and multilingual wrapping.
StatusLoading
callout
- Custom callouts:
annotations[] · datum · speed · callout · placement:auto
Loading
Callout · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"annotations": [
{
"connector": {
"visible": true
},
"detail": "Attach user-authored safe text to a datum, axis range, or normalized plot position.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "speed",
"type": "datum",
"value": 74.63
},
"text": "Point and range highlights · 74.63"
}
],
"axes": {
"x": false,
"y": false
},
"height": 620,
"interaction": {
"controls": {
"annotations": 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"
}
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"annotations": [
{
"connector": {
"visible": true
},
"detail": "Attach user-authored safe text to a datum, axis range, or normalized plot position.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "speed",
"type": "datum",
"value": 74.63
},
"text": "Point and range highlights · 74.63"
}
],
"axes": {
"x": false,
"y": false
},
"height": 620,
"interaction": {
"controls": {
"annotations": 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"
}
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Selection
Select and toggle data, then clear it from the background or Escape key.
StatusLoading
selection
- Interactive selection:
selection · multiple · toggle
Loading
Selection · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "speed",
"mode": "multiple",
"toggle": true
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "speed",
"mode": "multiple",
"toggle": true
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}View controls
Show or hide zoom, pan, reset, projection, fullscreen, and PNG export one menu at a time. Set controls: false to remove the entire toolbar.
StatusLoading
controls
Loading
View controls · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
const options = {
"axes": {
"x": false,
"y": false
},
"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
},
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"padding": {
"top": 52
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"axes": {
"x": false,
"y": false
},
"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
},
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
}
},
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"padding": {
"top": 52
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}Accessibility
Pair ARIA descriptions and keyboard guidance with a semantic data table.
StatusLoading
accessibility
Loading
Accessibility · Row data
Row data and zero-copy TypedArray columns share one data contract.
speedquantitative | qualityquantitative | costquantitative |
|---|---|---|
| 61 | 75 | 82 |
| 67.65 | 75.07 | 82.79 |
| 71.88 | 73.38 | 83.22 |
| 72.41 | 70.75 | 83.01 |
| 69.68 | 68.28 | 81.97 |
| 65.69 | 67.03 | 80.07 |
| 63.03 | 67.69 | 77.41 |
| 63.64 | 70.38 | 74.25 |
| 67.95 | 74.65 | 70.92 |
| 74.63 | 79.55 | 67.77 |
| 81.26 | 83.96 | 65.14 |
| 85.41 | 86.91 | 63.27 |
| 85.84 | 87.85 | 62.27 |
| 83.05 | 86.83 | 62.08 |
| 79.07 | 84.47 | 62.54 |
| 76.46 | 81.8 | 63.33 |
| 77.17 | 79.92 | 64.12 |
| 81.55 | 79.72 | 64.53 |
Browser API · Portable schema
Browser API
Graflume.scatterMatrix()
const data = [
{
"cost": 82,
"name": "Aurora · Seoul",
"quality": 75,
"region": "Seoul",
"speed": 61,
"train": "Aurora"
},
{
"cost": 82.79,
"name": "Aurora · Paris",
"quality": 75.07,
"region": "Paris",
"speed": 67.65,
"train": "Aurora"
},
{
"cost": 83.22,
"name": "Aurora · Austin",
"quality": 73.38,
"region": "Austin",
"speed": 71.88,
"train": "Aurora"
},
{
"cost": 83.01,
"name": "Beacon · Seoul",
"quality": 70.75,
"region": "Seoul",
"speed": 72.41,
"train": "Beacon"
},
{
"cost": 81.97,
"name": "Beacon · Paris",
"quality": 68.28,
"region": "Paris",
"speed": 69.68,
"train": "Beacon"
},
{
"cost": 80.07,
"name": "Beacon · Austin",
"quality": 67.03,
"region": "Austin",
"speed": 65.69,
"train": "Beacon"
},
{
"cost": 77.41,
"name": "Cinder · Seoul",
"quality": 67.69,
"region": "Seoul",
"speed": 63.03,
"train": "Cinder"
},
{
"cost": 74.25,
"name": "Cinder · Paris",
"quality": 70.38,
"region": "Paris",
"speed": 63.64,
"train": "Cinder"
},
{
"cost": 70.92,
"name": "Cinder · Austin",
"quality": 74.65,
"region": "Austin",
"speed": 67.95,
"train": "Cinder"
},
{
"cost": 67.77,
"name": "Delta · Seoul",
"quality": 79.55,
"region": "Seoul",
"speed": 74.63,
"train": "Delta"
},
{
"cost": 65.14,
"name": "Delta · Paris",
"quality": 83.96,
"region": "Paris",
"speed": 81.26,
"train": "Delta"
},
{
"cost": 63.27,
"name": "Delta · Austin",
"quality": 86.91,
"region": "Austin",
"speed": 85.41,
"train": "Delta"
},
{
"cost": 62.27,
"name": "Ember · Seoul",
"quality": 87.85,
"region": "Seoul",
"speed": 85.84,
"train": "Ember"
},
{
"cost": 62.08,
"name": "Ember · Paris",
"quality": 86.83,
"region": "Paris",
"speed": 83.05,
"train": "Ember"
},
{
"cost": 62.54,
"name": "Ember · Austin",
"quality": 84.47,
"region": "Austin",
"speed": 79.07,
"train": "Ember"
},
{
"cost": 63.33,
"name": "Fjord · Seoul",
"quality": 81.8,
"region": "Seoul",
"speed": 76.46,
"train": "Fjord"
},
{
"cost": 64.12,
"name": "Fjord · Paris",
"quality": 79.92,
"region": "Paris",
"speed": 77.17,
"train": "Fjord"
},
{
"cost": 64.53,
"name": "Fjord · Austin",
"quality": 79.72,
"region": "Austin",
"speed": 81.55,
"train": "Fjord"
}
];
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": "Scatter matrix · Accessibility example"
},
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
};
Graflume.scatterMatrix('#chart', data, options);Portable schema
ChartSpec 0.1 · 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": "Scatter matrix · Accessibility example"
},
"axes": {
"x": false,
"y": false
},
"height": 620,
"locale": "en",
"mark": {
"options": {
"dimensions": [
"speed",
"quality",
"cost"
]
}
},
"width": "container",
"x": {
"field": "speed",
"title": "Release metric",
"type": "quantitative"
},
"y": {
"field": "quality",
"title": "Release metric",
"type": "quantitative"
}
}