Graflume · Alpha
Combination · Basic implementation · Common features
Compare differently scaled layers such as revenue bars and a margin-rate line on primary and secondary axes. 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 · Default families
Combination
Compare differently scaled layers such as revenue bars and a margin-rate line on primary and secondary axes.
- Quick API
combo()- Browser snapshot
graflume- mark
multiple- Presets
- 2
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 differently scaled layers such as revenue bars and a margin-rate line on primary and secondary axes.
StatusLoading
minimal-implementation
Loading
Basic example · Row data
Row data and zero-copy TypedArray columns share one data contract.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
}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.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"title": {
"subtitle": "Combo chart uses runnable data and options to demonstrate flat portable layers; independent x/x2/y/y2 domains.",
"text": "Combination"
},
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"title": {
"subtitle": "Combo chart uses runnable data and options to demonstrate flat portable layers; independent x/x2/y/y2 domains.",
"text": "Combination"
},
"width": "container"
}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.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "Period"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "Revenue",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "MarginRate"
}
],
"title": "Combination · Tooltip",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "Period"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "Revenue",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "MarginRate"
}
],
"title": "Combination · Tooltip",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
}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.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"theme": "graflume-light",
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"theme": "graflume-light",
"width": "container"
}Legend
Explain the visual meaning of layers, categories, or continuous values.
StatusLoading
legend
- Legend:
legend · layers · interactive
Loading
Legend · Row data
Row data and zero-copy TypedArray columns share one data contract.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination · Legend",
"visible": true
},
"locale": "en",
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination · Legend",
"visible": true
},
"locale": "en",
"width": "container"
}Highlight
Emphasize a representative datum or spatial position to guide inspection.
StatusLoading
highlight
- Point and range highlights:
highlights[] · datum · category
Loading
Highlight · Row data
Row data and zero-copy TypedArray columns share one data contract.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
}
}
],
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
}
}
],
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
}Callout
Show an explanatory callout with automatic collision avoidance and multilingual wrapping.
StatusLoading
callout
- Custom callouts:
annotations[] · datum · category · callout · placement:auto
Loading
Callout · Row data
Row data and zero-copy TypedArray columns share one data contract.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
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": "category",
"type": "datum",
"value": "Jul"
},
"text": "Point and range highlights · Jul"
}
],
"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"
}
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
};
Graflume.combo('#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": "category",
"type": "datum",
"value": "Jul"
},
"text": "Point and range highlights · Jul"
}
],
"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"
}
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
}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.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "category",
"mode": "multiple",
"toggle": true
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "category",
"mode": "multiple",
"toggle": true
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
}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.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"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"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"padding": {
"top": 52
},
"width": "container"
};
Graflume.combo('#chart', data, options);Portable schema
ChartSpec 0.1 · options
{
"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"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"padding": {
"top": 52
},
"width": "container"
}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.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
Browser API · Portable schema
Browser API
Graflume.combo()
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
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": "Combination · Accessibility example"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
};
Graflume.combo('#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": "Combination · Accessibility example"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "en",
"width": "container"
}