ARIA · table fallbackAccessibility
Canvas ARIA metadata is paired with a text summary and table fallback.
Graflume · Alpha
Display open, high, low, close, and price direction for each period.
Chart family · Default families
Display open, high, low, close, and price direction for each period.
candlestick()graflumecandlestickBasic implementation
Start with only the required data and family encoding. Expand the code to run the same example.
Display open, high, low, close, and price direction for each period.
StatusLoading
minimal-implementationLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Common features
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.
Add a chart title and supporting description inside the visualization.
StatusLoading
headerLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"title": {
"subtitle": "Candlestick chart uses runnable data and options to demonstrate session and timezone calendar.",
"text": "Candlestick"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"title": {
"subtitle": "Candlestick chart uses runnable data and options to demonstrate session and timezone calendar.",
"text": "Candlestick"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}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
tooltipLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Tooltip",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Tooltip",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Apply the current built-in theme from the selector and update every active example together.
StatusLoading
themeLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"theme": "graflume-light",
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"theme": "graflume-light",
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Explain the visual meaning of layers, categories, or continuous values.
StatusLoading
legendlegend · explicit · 2 channelsLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"legend": {
"interactive": false,
"items": [
{
"id": "semantic-0",
"label": "Rising"
},
{
"id": "semantic-1",
"label": "Falling"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Candlestick · Legend",
"visible": true
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"legend": {
"interactive": false,
"items": [
{
"id": "semantic-0",
"label": "Rising"
},
{
"id": "semantic-1",
"label": "Falling"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Candlestick · Legend",
"visible": true
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Emphasize a representative datum or spatial position to guide inspection.
StatusLoading
highlighthighlights[] · datum · dateLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "date",
"type": "datum",
"value": "2025-02-02"
}
}
],
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "date",
"type": "datum",
"value": "2025-02-02"
}
}
],
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Show an explanatory callout with automatic collision avoidance and multilingual wrapping.
StatusLoading
calloutannotations[] · datum · date · callout · placement:autoLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "date",
"type": "datum",
"value": "2025-02-02"
},
"text": "Point and range highlights · 2025-02-02"
}
],
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"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": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"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": "date",
"type": "datum",
"value": "2025-02-02"
},
"text": "Point and range highlights · 2025-02-02"
}
],
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"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": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Select and toggle data, then clear it from the background or Escape key.
StatusLoading
selectionselection · multiple · toggleLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "date",
"mode": "multiple",
"toggle": true
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "date",
"mode": "multiple",
"toggle": true
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}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
controlsLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"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": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"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": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Pair ARIA descriptions and keyboard guidance with a semantic data table.
StatusLoading
accessibilityLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "Candlestick · Accessibility example"
},
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick · Accessibility example"
},
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Chart-specific features
These tabs come from Graflume's public catalog. Every mode owns runnable data, options, a Quick API, and source-backed feature claims.
Candlestick chart uses runnable data and options to demonstrate session and timezone calendar.
StatusLoading
candlesticksession and timezone calendarLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "Candlestick example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Candlestick chart uses runnable data and options to demonstrate session and timezone calendar.",
"text": "Candlestick"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Candlestick chart uses runnable data and options to demonstrate session and timezone calendar.",
"text": "Candlestick"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Heikin-Ashi chart uses runnable data and options to demonstrate OHLC and HLC; gapless trading axis.
StatusLoading
heikin-ashiOHLC and HLCgapless trading axisLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "Candlestick · Heikin-Ashi chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Heikin-Ashi chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "heikin-ashi"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Heikin-Ashi chart uses runnable data and options to demonstrate OHLC and HLC; gapless trading axis.",
"text": "Candlestick · Heikin-Ashi chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.heikinAshi('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick · Heikin-Ashi chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Heikin-Ashi chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "heikin-ashi"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Heikin-Ashi chart uses runnable data and options to demonstrate OHLC and HLC; gapless trading axis.",
"text": "Candlestick · Heikin-Ashi chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}High-low-close chart uses runnable data and options to demonstrate hollow candle; extended-hours policy.
StatusLoading
high-low-closehollow candleextended-hours policyLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "Candlestick · High-low-close chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · High-low-close chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "high-low-close"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "High-low-close chart uses runnable data and options to demonstrate hollow candle; extended-hours policy.",
"text": "Candlestick · High-low-close chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.highLowClose('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick · High-low-close chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · High-low-close chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "high-low-close"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "High-low-close chart uses runnable data and options to demonstrate hollow candle; extended-hours policy.",
"text": "Candlestick · High-low-close chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Hollow candlestick chart uses runnable data and options to demonstrate Heikin-Ashi; navigator.
StatusLoading
hollow-candlestickHeikin-AshinavigatorLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "Candlestick · Hollow candlestick chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Hollow candlestick chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "hollow-candlestick"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Hollow candlestick chart uses runnable data and options to demonstrate Heikin-Ashi; navigator.",
"text": "Candlestick · Hollow candlestick chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.hollowCandlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick · Hollow candlestick chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Hollow candlestick chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "hollow-candlestick"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Hollow candlestick chart uses runnable data and options to demonstrate Heikin-Ashi; navigator.",
"text": "Candlestick · Hollow candlestick chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Open-high-low-close chart uses runnable data and options to demonstrate OHLC aggregation.
StatusLoading
open-high-low-closeOHLC aggregationLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
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": "Candlestick · Open-high-low-close chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Open-high-low-close chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "open-high-low-close"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Open-high-low-close chart uses runnable data and options to demonstrate OHLC aggregation.",
"text": "Candlestick · Open-high-low-close chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.openHighLowClose('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick · Open-high-low-close chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick · Open-high-low-close chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
},
"options": {
"kind": "open-high-low-close"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Open-high-low-close chart uses runnable data and options to demonstrate OHLC aggregation.",
"text": "Candlestick · Open-high-low-close chart"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Play frames from a time field and stable key, with smooth enter, update, and exit transitions.
StatusLoading
playbacksmooth-transitionsLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | openquantitative | highquantitative | lowquantitative | closequantitative |
|---|---|---|---|---|
| 2026-01-01 | 22 | 29 | 19 | 27 |
| 2026-02-01 | 27 | 31 | 23 | 25 |
| 2026-03-01 | 25 | 34 | 24 | 32 |
| 2026-04-01 | 32 | 36 | 28 | 30 |
Browser API
const data = [
{
"close": 27,
"date": "2026-01-01",
"high": 29,
"low": 19,
"open": 22
},
{
"close": 25,
"date": "2026-02-01",
"high": 31,
"low": 23,
"open": 27
},
{
"close": 32,
"date": "2026-03-01",
"high": 34,
"low": 24,
"open": 25
},
{
"close": 30,
"date": "2026-04-01",
"high": 36,
"low": 28,
"open": 32
}
];
const options = {
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": true
},
"hover": true,
"playback": {
"autoplay": false,
"field": "date",
"filter": true,
"interval": 1000,
"key": "date",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "close",
"format": "number",
"label": "Close"
}
],
"title": "Candlestick · Playback and transitions",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"scale": {
"domain": [
"2026-01-01",
"2026-04-01"
]
},
"title": "date",
"type": "temporal"
},
"y": {
"field": "close",
"scale": {
"domain": [
18,
38
]
},
"title": "close",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"height": 620,
"interaction": {
"controls": {
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": true
},
"hover": true,
"playback": {
"autoplay": false,
"field": "date",
"filter": true,
"interval": 1000,
"key": "date",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "close",
"format": "number",
"label": "Close"
}
],
"title": "Candlestick · Playback and transitions",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"width": "container",
"x": {
"field": "date",
"scale": {
"domain": [
"2026-01-01",
"2026-04-01"
]
},
"title": "date",
"type": "temporal"
},
"y": {
"field": "close",
"scale": {
"domain": [
18,
38
]
},
"title": "close",
"type": "quantitative"
}
}Edge cases
Exercise numeric range, sparse structure, and large inputs with valid data. Each tab materializes data only when needed and never silently repairs invalid values.
Mix zero, very small finite values, and very large finite values to verify automatic domains, precision, and stable geometry. NaN and Infinity remain intentionally invalid. It applies 2 data-integrity rules that preserve finite values and axis domains.
StatusLoading
extreme-rangeextreme-smallextreme-largepositive-domainbudget:marks<=6Loading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative | valuequantitative | volumequantitative |
|---|---|---|---|---|---|---|
| 2026-01-01 | 5.150000000000001e-10 | 5.05e-10 | 5.253000000000001e-10 | 4.949e-10 | 5.150000000000001e-10 | 0 |
| 2026-02-01 | 9.9e-07 | 1.0099999999999999e-06 | 1.0302e-06 | 9.702e-07 | 9.9e-07 | 1 |
| 2026-03-01 | 1.03 | 1.01 | 1.0506 | 0.9898 | 1.03 | 1000 |
| 2026-04-01 | 990 | 1010 | 1030.2 | 970.1999999999999 | 990 | 1e+06 |
| 2026-05-01 | 1.03e+06 | 1.01e+06 | 1.0506e+06 | 989800 | 1.03e+06 | 1e+09 |
| 2026-06-01 | 1.98e+09 | 2.02e+09 | 2.0604e+09 | 1.9404e+09 | 1.98e+09 | 1e+12 |
Browser API
const data = [
{
"close": 5.150000000000001e-10,
"date": "2026-01-01",
"high": 5.253000000000001e-10,
"low": 4.949e-10,
"open": 5.05e-10,
"value": 5.150000000000001e-10,
"volume": 0
},
{
"close": 9.9e-7,
"date": "2026-02-01",
"high": 0.0000010302,
"low": 9.702e-7,
"open": 0.0000010099999999999999,
"value": 9.9e-7,
"volume": 1
},
{
"close": 1.03,
"date": "2026-03-01",
"high": 1.0506,
"low": 0.9898,
"open": 1.01,
"value": 1.03,
"volume": 1000
},
{
"close": 990,
"date": "2026-04-01",
"high": 1030.2,
"low": 970.1999999999999,
"open": 1010,
"value": 990,
"volume": 1000000
},
{
"close": 1030000,
"date": "2026-05-01",
"high": 1050600,
"low": 989800,
"open": 1010000,
"value": 1030000,
"volume": 1000000000
},
{
"close": 1980000000,
"date": "2026-06-01",
"high": 2060400000,
"low": 1940400000,
"open": 2020000000,
"value": 1980000000,
"volume": 1000000000000
}
];
const options = {
"accessibility": {
"description": "A coherent daily market path with open, high, low, close, and volume. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Candlestick"
},
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "value",
"format": "number",
"label": "Value"
},
{
"field": "volume",
"format": "number",
"label": "Volume"
}
],
"title": "Candlestick",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"title": {
"subtitle": "edge case · range",
"text": "Candlestick"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "A coherent daily market path with open, high, low, close, and volume. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Candlestick"
},
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "value",
"format": "number",
"label": "Value"
},
{
"field": "volume",
"format": "number",
"label": "Volume"
}
],
"title": "Candlestick",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"title": {
"subtitle": "edge case · range",
"text": "Candlestick"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Exercise only duplicate, missing, sparse, or out-of-order structures whose meaning is defined for this family. Broken references and malformed tuples are never disguised as successful examples. It applies 3 structural rules that preserve the meaning of missing, duplicate, and ordered values.
StatusLoading
irregular-structuresparseout-of-orderbudget:marks<=6Loading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative | valuequantitative | volumequantitative |
|---|---|---|---|---|---|---|
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 | 97.4641 | 1217 |
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 | 95.1 | 1070 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 | 98.1631 | 1287 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 | 98.4747 | 1353 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 | 98.3969 | 1415 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 | 96.4177 | 1144 |
Browser API
const data = [
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
}
];
const options = {
"accessibility": {
"description": "A coherent daily market path with open, high, low, close, and volume. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Candlestick · Sparse and irregular structure"
},
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "value",
"format": "number",
"label": "Value"
},
{
"field": "volume",
"format": "number",
"label": "Volume"
}
],
"title": "Candlestick · Sparse and irregular structure",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"title": {
"subtitle": "edge case · structure",
"text": "Candlestick · Sparse and irregular structure"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "A coherent daily market path with open, high, low, close, and volume. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Candlestick · Sparse and irregular structure"
},
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "value",
"format": "number",
"label": "Value"
},
{
"field": "volume",
"format": "number",
"label": "Volume"
}
],
"title": "Candlestick · Sparse and irregular structure",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"title": {
"subtitle": "edge case · structure",
"text": "Candlestick · Sparse and irregular structure"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Materialize a deterministic compact recipe only when this tab opens. Graflume's performance profile bounds mark count, hit testing, and animation work for the input size. It applies 6 high-volume rules for deterministic generation and bounded output. This family materializes 60,000 logical rows and bounds rendered bar marks at 12,000.
StatusLoading
high-row-cardinalityall-input-rows-generatedall-input-rows-processeddeterministic-generationbounded-renderinginput:60000zoom-pan-resetbudget:bar-marks<=12000legend · explicit · 2 channelshighlights[] · datum · dateannotations[] · datum · date · callout · placement:autoLoading
Browser API
const recipe = {
"cardinality": {
"axes": {},
"sourceRows": 60000,
"unit": "rows"
},
"expectedInvariants": [
"finite-json",
"ohlcv-low-order",
"ohlcv-high-order",
"volume-nonnegative"
],
"id": "ohlcv-sequence",
"initialView": {
"kind": "domain",
"zoom": 1
},
"outputBudget": {
"maximum": 12000,
"resource": "bar-marks"
},
"parameters": {
"family": "candlestick",
"nullableFields": [],
"positiveFields": [
"volume"
],
"scenario": "volume",
"valueFields": [
"value",
"open",
"high",
"low",
"close"
],
"valuePolicy": "ohlcv"
},
"preview": {
"maximumRows": 12,
"method": "quantiles"
},
"reduction": {
"method": "ohlcv-time-bins",
"stage": "bin"
},
"seed": 3405060616,
"shape": "rows",
"version": 2
};
const { data, previewRows, plan } = Graflume.materializeDemoRecipe(recipe);
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": "Candlestick · High data volume"
},
"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": "date",
"type": "datum",
"value": "2025-02-03"
},
"text": "Point and range highlights · 2025-02-03"
}
],
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"create": {
"adaptive": {
"environment": {
"rowCount": 60000
},
"largeDataNavigation": true,
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "date",
"type": "datum",
"value": "2025-02-03"
}
}
],
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "value",
"format": "number",
"label": "Value"
},
{
"field": "volume",
"format": "number",
"label": "Volume"
}
],
"title": "Candlestick · High data volume",
"trigger": "axis"
}
},
"legend": {
"interactive": false,
"items": [
{
"id": "semantic-0",
"label": "Rising"
},
{
"id": "semantic-1",
"label": "Falling"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Candlestick · High data volume",
"visible": true
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"performance": "auto",
"theme": "graflume-light",
"title": {
"subtitle": "A coherent daily market path with open, high, low, close, and volume · 60,000 logical rows, screen-aware detail",
"text": "Candlestick · High data volume"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Candlestick · High data volume"
},
"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": "date",
"type": "datum",
"value": "2025-02-03"
},
"text": "Point and range highlights · 2025-02-03"
}
],
"axes": {
"x": {
"format": {
"dateStyle": "long",
"timeZone": "UTC",
"type": "date"
}
}
},
"create": {
"adaptive": {
"environment": {
"rowCount": 60000
},
"largeDataNavigation": true,
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "date",
"type": "datum",
"value": "2025-02-03"
}
}
],
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
},
{
"field": "value",
"format": "number",
"label": "Value"
},
{
"field": "volume",
"format": "number",
"label": "Volume"
}
],
"title": "Candlestick · High data volume",
"trigger": "axis"
}
},
"legend": {
"interactive": false,
"items": [
{
"id": "semantic-0",
"label": "Rising"
},
{
"id": "semantic-1",
"label": "Falling"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Candlestick · High data volume",
"visible": true
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"performance": "auto",
"theme": "graflume-light",
"title": {
"subtitle": "A coherent daily market path with open, high, low, close, and volume · 60,000 logical rows, screen-aware detail",
"text": "Candlestick · High data volume"
},
"width": "container",
"x": {
"field": "date",
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"title": "Price",
"type": "quantitative"
}
}Extreme environments
Combine container size, input method, display capability, and user preference instead of guessing a device name. Compare mobile, watch, e-paper, monochrome, dot-matrix, and standards-based extreme environments on the same chart.
Reflow axes, legends, descriptions, and controls from the available container size.
960×540 · adaptive.profiles=responsive-fluidzoom-reflowshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialPrioritize 44px touch targets, tap tooltips, and collapsed secondary information on a narrow portrait screen.
390×844 · adaptive.profiles=mobile-touchzoom-reflowcoarse-touchvirtual-keyboardshape-rectangledisplay-colorinput-coarsemotion-fullrenderer-canvas-spatialKeep essential marks, values, and stepped controls on a tiny or round screen, with the remaining detail reflowed below.
184×224 · adaptive.profiles=smartwatchzoom-reflowreduced-effectscoarse-touchlow-resourcecutout-roundshape-rounddisplay-colorinput-coarsemotion-reducedrenderer-canvas-spatialviewport-tinyPrefer stable frames, strong contrast, and the data table for low-refresh e-paper displays.
758×1024 · adaptive.profiles=ebook-paperprint-pagedreduced-effectslow-resourceshape-pageddisplay-e-inkinput-keyboardmotion-staticrenderer-canvas-spatialUse strokes, markers, patterns, labels, and the table so color is never the only distinction.
640×400 · adaptive.profiles=monochromereduced-effectsshape-rectangledisplay-monochromeinput-finemotion-reducedrenderer-canvas-spatialReduce decoration and mark density while using strong strokes, integer labels, and stepped zoom on a low-resolution display.
320×240 · adaptive.profiles=dot-matrixzoom-reflowreduced-effectskeyboard-switchlow-resourceshape-rectangledisplay-gridinput-keyboardmotion-staticrenderer-canvas-spatialviewport-tinyReflow prose to one dimension at the 320 CSS px equivalent while retaining chart-local zoom and pan.
320×480 · adaptive.profiles=zoom-reflowzoom-reflowshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialKeep the chart and explanation in independent viewport segments without crossing the hinge.
720×640 · adaptive.profiles=foldable-dualfoldable-dualshape-dualdisplay-colorinput-finemotion-fullrenderer-canvas-spatialProvide strong focus indication and D-pad, Enter, and Escape operation on a hoverless distance display.
1920×1080 · adaptive.profiles=tv-remotetv-remoteshape-rectangledisplay-colorinput-remotemotion-fullrenderer-canvas-spatialPair a static chart with its description and table, hide controls, and avoid page breaks through the figure.
794×1123 · adaptive.profiles=print-pagedprint-pagedshape-pageddisplay-colorinput-finemotion-staticrenderer-canvas-spatialHonor system colors and borders while retaining patterns, markers, and text as redundant cues.
640×400 · adaptive.profiles=forced-colorsforced-colorsshape-rectangledisplay-high-contrastinput-finemotion-fullrenderer-canvas-spatialComplete transitions immediately and use opaque surfaces and deferred work to reduce motion and transparency load.
640×400 · adaptive.profiles=reduced-effectsreduced-effectsshape-rectangledisplay-colorinput-finemotion-reducedrenderer-canvas-spatialInspect values by tap without hover, keep targets at least 44px, and expose explicit zoom buttons.
390×844 · adaptive.profiles=coarse-touchcoarse-touchshape-rectangledisplay-colorinput-coarsemotion-fullrenderer-canvas-spatialReach every operation with Tab, arrows, Enter, Space, and Escape, with no drag-only action.
640×400 · adaptive.profiles=keyboard-switchkeyboard-switchshape-rectangledisplay-colorinput-keyboardmotion-fullrenderer-canvas-spatialPrefer progressive rendering, sampling, cancellable work, and a static fallback under constrained memory or connectivity.
640×400 · adaptive.profiles=low-resourcelow-resourceshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialFollow RTL logical flow for prose and tabs while keeping axes, code, and data identifiers in technical LTR order.
640×400 · adaptive.profiles=rtlrtlshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialReflow vertical prose while keeping the chart and technical surfaces in an independent horizontal panel.
640×400 · adaptive.profiles=vertical-writingvertical-writingshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialCap chart width instead of stretching indefinitely, using panelization and readable labels on ultrawide or projected surfaces.
1920×720 · adaptive.profiles=ultrawide-projectionultrawide-projectionshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialProvide short and long descriptions, a semantic table, and status so Canvas or color is never the sole information path.
640×400 · adaptive.profiles=screenreader-braillescreenreader-brailleshape-nonvisualdisplay-colorinput-nonvisualmotion-fullrenderer-canvas-spatialA verified static preview, description, and collapsible row-data table preserve the essential information when scripting is unavailable.
640×400 · adaptive.profiles=no-scriptno-scriptshape-nonvisualdisplay-colorinput-finemotion-staticrenderer-static-fallbackFall back safely to the ordinary 2D or WebGL panel when XR APIs are absent, duplicating depth cues in text and the table.
640×400 · adaptive.profiles=spatial-xrspatial-xrshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialInset titles, marks, and controls around safe areas and round display bounds so they are not clipped.
184×224 · adaptive.profiles=cutout-roundcutout-roundshape-rounddisplay-colorinput-finemotion-fullrenderer-canvas-spatialviewport-tinyReflow focus controls, the chart, and the active explanation when a virtual keyboard reduces the visual viewport.
390×560 · adaptive.profiles=virtual-keyboardvirtual-keyboardshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialChoose a profile above to preserve the same data and ChartSpec while reconfiguring the chart for display size, input method, display capability, and user preference.
StatusLoading
adaptivecapability-drivenno-user-agent-branchinglegend · explicit · 2 channelshighlights[] · datum · dateannotations[] · datum · date · callout · placement:autoselection · multiple · toggleLoading
Row data and zero-copy TypedArray columns share one data contract.
datetemporal | closequantitative | openquantitative | highquantitative | lowquantitative |
|---|---|---|---|---|
| 2025-01-01 | 95.1 | 94 | 96.3 | 92.9 |
| 2025-01-02 | 96.4177 | 95.7997 | 97.6977 | 94.6097 |
| 2025-01-03 | 97.4641 | 97.3786 | 98.8241 | 96.0986 |
| 2025-01-04 | 98.1631 | 98.5624 | 100.0024 | 96.7931 |
| 2025-01-05 | 98.4747 | 99.2322 | 100.7522 | 97.3747 |
| 2025-01-06 | 98.3969 | 99.3404 | 100.5404 | 97.2069 |
| 2025-01-07 | 97.9643 | 98.9138 | 100.1938 | 96.6843 |
| 2025-01-08 | 97.2423 | 98.0461 | 99.4061 | 95.8723 |
| 2025-01-09 | 96.3192 | 96.8793 | 98.3193 | 95.2192 |
| 2025-01-10 | 95.296 | 95.5793 | 97.0993 | 94.106 |
| 2025-01-11 | 94.2766 | 94.3096 | 95.5096 | 92.9966 |
| 2025-01-12 | 93.3576 | 93.2092 | 94.6376 | 91.8392 |
| 2025-01-13 | 92.62 | 92.3761 | 93.98 | 91.2761 |
| 2025-01-14 | 92.1232 | 91.8609 | 93.5632 | 90.6709 |
| 2025-01-15 | 91.9016 | 91.669 | 93.4216 | 90.389 |
| 2025-01-16 | 91.9631 | 91.7703 | 93.1631 | 90.4003 |
| 2025-01-17 | 92.2911 | 92.1131 | 93.5711 | 91.0131 |
| 2025-01-18 | 92.8475 | 92.6392 | 94.2075 | 91.4492 |
| 2025-01-19 | 93.5779 | 93.2948 | 95.0179 | 92.0148 |
| 2025-01-20 | 94.4172 | 94.0373 | 95.9372 | 92.6673 |
| 2025-01-21 | 95.2956 | 94.8355 | 96.4956 | 93.7355 |
| 2025-01-22 | 96.1441 | 95.6643 | 97.4241 | 94.4743 |
| 2025-01-23 | 96.8995 | 96.4964 | 98.2595 | 95.2164 |
| 2025-01-24 | 97.5083 | 97.2947 | 98.9483 | 95.9247 |
| 2025-01-25 | 97.9299 | 98.0069 | 99.5269 | 96.8299 |
| 2025-01-26 | 98.1388 | 98.5662 | 99.7662 | 96.9488 |
| 2025-01-27 | 98.1252 | 98.8987 | 100.1787 | 96.8452 |
| 2025-01-28 | 97.8956 | 98.9355 | 100.2955 | 96.5256 |
| 2025-01-29 | 97.4723 | 98.6288 | 100.0688 | 96.3723 |
| 2025-01-30 | 96.8921 | 97.9675 | 99.4875 | 95.7021 |
| 2025-01-31 | 96.2043 | 96.9891 | 98.1891 | 94.9243 |
| 2025-02-01 | 95.4682 | 95.7827 | 97.0627 | 94.0982 |
| 2025-02-02 | 94.7495 | 94.4846 | 96.1095 | 93.3846 |
| 2025-02-03 | 94.1163 | 93.2624 | 95.5563 | 92.0724 |
| 2025-02-04 | 93.6345 | 92.2928 | 95.1545 | 91.0128 |
| 2025-02-05 | 93.3624 | 91.7342 | 94.5624 | 90.3642 |
| 2025-02-06 | 93.3458 | 91.7009 | 94.6258 | 90.6009 |
| 2025-02-07 | 93.6128 | 92.2427 | 94.9728 | 91.0527 |
| 2025-02-08 | 94.1706 | 93.3336 | 95.6106 | 92.0536 |
| 2025-02-09 | 95.0024 | 94.8731 | 96.5224 | 93.5031 |
| 2025-02-10 | 96.0672 | 96.6995 | 97.8995 | 94.9672 |
| 2025-02-11 | 97.3012 | 98.6132 | 99.8932 | 96.1112 |
| 2025-02-12 | 98.6223 | 100.4064 | 101.7664 | 97.3423 |
| 2025-02-13 | 99.9361 | 101.8939 | 103.3339 | 98.5661 |
| 2025-02-14 | 101.1441 | 102.9388 | 104.4588 | 100.0441 |
| 2025-02-15 | 102.1532 | 103.471 | 104.671 | 100.9632 |
| 2025-02-16 | 102.8851 | 103.493 | 104.773 | 101.6051 |
| 2025-02-17 | 103.2854 | 103.0745 | 104.6454 | 101.7045 |
| 2025-02-18 | 103.3306 | 102.3366 | 104.7706 | 101.2366 |
| 2025-02-19 | 103.0322 | 101.4292 | 104.5522 | 100.2392 |
| 2025-02-20 | 102.4378 | 100.506 | 103.6378 | 99.226 |
| 2025-02-21 | 101.6282 | 99.7023 | 102.9082 | 98.3323 |
| 2025-02-22 | 100.7105 | 99.1185 | 102.0705 | 98.0185 |
| 2025-02-23 | 99.8085 | 98.8127 | 101.2485 | 97.6227 |
| 2025-02-24 | 99.0497 | 98.801 | 100.5697 | 97.521 |
| 2025-02-25 | 98.5523 | 99.0666 | 100.2666 | 97.1823 |
| 2025-02-26 | 98.4121 | 99.5714 | 100.8514 | 97.3121 |
| 2025-02-27 | 98.6906 | 100.27 | 101.63 | 97.5006 |
| 2025-02-28 | 99.4076 | 101.1202 | 102.5602 | 98.1276 |
| 2025-03-01 | 100.5364 | 102.0882 | 103.6082 | 99.1664 |
| 2025-03-02 | 102.0054 | 103.1483 | 104.3483 | 100.9054 |
| 2025-03-03 | 103.704 | 104.2779 | 105.5579 | 102.514 |
| 2025-03-04 | 105.4928 | 105.4483 | 106.8528 | 104.1683 |
| 2025-03-05 | 107.218 | 106.617 | 108.658 | 105.247 |
Browser API
const data = [
{
"close": 95.1,
"date": "2025-01-01",
"high": 96.3,
"low": 92.9,
"open": 94,
"value": 95.1,
"volume": 1070
},
{
"close": 96.4177,
"date": "2025-01-02",
"high": 97.6977,
"low": 94.6097,
"open": 95.7997,
"value": 96.4177,
"volume": 1144
},
{
"close": 97.4641,
"date": "2025-01-03",
"high": 98.8241,
"low": 96.0986,
"open": 97.3786,
"value": 97.4641,
"volume": 1217
},
{
"close": 98.1631,
"date": "2025-01-04",
"high": 100.0024,
"low": 96.7931,
"open": 98.5624,
"value": 98.1631,
"volume": 1287
},
{
"close": 98.4747,
"date": "2025-01-05",
"high": 100.7522,
"low": 97.3747,
"open": 99.2322,
"value": 98.4747,
"volume": 1353
},
{
"close": 98.3969,
"date": "2025-01-06",
"high": 100.5404,
"low": 97.2069,
"open": 99.3404,
"value": 98.3969,
"volume": 1415
},
{
"close": 97.9643,
"date": "2025-01-07",
"high": 100.1938,
"low": 96.6843,
"open": 98.9138,
"value": 97.9643,
"volume": 1470
},
{
"close": 97.2423,
"date": "2025-01-08",
"high": 99.4061,
"low": 95.8723,
"open": 98.0461,
"value": 97.2423,
"volume": 1519
},
{
"close": 96.3192,
"date": "2025-01-09",
"high": 98.3193,
"low": 95.2192,
"open": 96.8793,
"value": 96.3192,
"volume": 1562
},
{
"close": 95.296,
"date": "2025-01-10",
"high": 97.0993,
"low": 94.106,
"open": 95.5793,
"value": 95.296,
"volume": 1598
},
{
"close": 94.2766,
"date": "2025-01-11",
"high": 95.5096,
"low": 92.9966,
"open": 94.3096,
"value": 94.2766,
"volume": 1629
},
{
"close": 93.3576,
"date": "2025-01-12",
"high": 94.6376,
"low": 91.8392,
"open": 93.2092,
"value": 93.3576,
"volume": 1656
},
{
"close": 92.62,
"date": "2025-01-13",
"high": 93.98,
"low": 91.2761,
"open": 92.3761,
"value": 92.62,
"volume": 1679
},
{
"close": 92.1232,
"date": "2025-01-14",
"high": 93.5632,
"low": 90.6709,
"open": 91.8609,
"value": 92.1232,
"volume": 1699
},
{
"close": 91.9016,
"date": "2025-01-15",
"high": 93.4216,
"low": 90.389,
"open": 91.669,
"value": 91.9016,
"volume": 1106
},
{
"close": 91.9631,
"date": "2025-01-16",
"high": 93.1631,
"low": 90.4003,
"open": 91.7703,
"value": 91.9631,
"volume": 1126
},
{
"close": 92.2911,
"date": "2025-01-17",
"high": 93.5711,
"low": 91.0131,
"open": 92.1131,
"value": 92.2911,
"volume": 1147
},
{
"close": 92.8475,
"date": "2025-01-18",
"high": 94.2075,
"low": 91.4492,
"open": 92.6392,
"value": 92.8475,
"volume": 1173
},
{
"close": 93.5779,
"date": "2025-01-19",
"high": 95.0179,
"low": 92.0148,
"open": 93.2948,
"value": 93.5779,
"volume": 1202
},
{
"close": 94.4172,
"date": "2025-01-20",
"high": 95.9372,
"low": 92.6673,
"open": 94.0373,
"value": 94.4172,
"volume": 1237
},
{
"close": 95.2956,
"date": "2025-01-21",
"high": 96.4956,
"low": 93.7355,
"open": 94.8355,
"value": 95.2956,
"volume": 1278
},
{
"close": 96.1441,
"date": "2025-01-22",
"high": 97.4241,
"low": 94.4743,
"open": 95.6643,
"value": 96.1441,
"volume": 1325
},
{
"close": 96.8995,
"date": "2025-01-23",
"high": 98.2595,
"low": 95.2164,
"open": 96.4964,
"value": 96.8995,
"volume": 1378
},
{
"close": 97.5083,
"date": "2025-01-24",
"high": 98.9483,
"low": 95.9247,
"open": 97.2947,
"value": 97.5083,
"volume": 1437
},
{
"close": 97.9299,
"date": "2025-01-25",
"high": 99.5269,
"low": 96.8299,
"open": 98.0069,
"value": 97.9299,
"volume": 1502
},
{
"close": 98.1388,
"date": "2025-01-26",
"high": 99.7662,
"low": 96.9488,
"open": 98.5662,
"value": 98.1388,
"volume": 1571
},
{
"close": 98.1252,
"date": "2025-01-27",
"high": 100.1787,
"low": 96.8452,
"open": 98.8987,
"value": 98.1252,
"volume": 1643
},
{
"close": 97.8956,
"date": "2025-01-28",
"high": 100.2955,
"low": 96.5256,
"open": 98.9355,
"value": 97.8956,
"volume": 1104
},
{
"close": 97.4723,
"date": "2025-01-29",
"high": 100.0688,
"low": 96.3723,
"open": 98.6288,
"value": 97.4723,
"volume": 1179
},
{
"close": 96.8921,
"date": "2025-01-30",
"high": 99.4875,
"low": 95.7021,
"open": 97.9675,
"value": 96.8921,
"volume": 1252
},
{
"close": 96.2043,
"date": "2025-01-31",
"high": 98.1891,
"low": 94.9243,
"open": 96.9891,
"value": 96.2043,
"volume": 1323
},
{
"close": 95.4682,
"date": "2025-02-01",
"high": 97.0627,
"low": 94.0982,
"open": 95.7827,
"value": 95.4682,
"volume": 1391
},
{
"close": 94.7495,
"date": "2025-02-02",
"high": 96.1095,
"low": 93.3846,
"open": 94.4846,
"value": 94.7495,
"volume": 1454
},
{
"close": 94.1163,
"date": "2025-02-03",
"high": 95.5563,
"low": 92.0724,
"open": 93.2624,
"value": 94.1163,
"volume": 1511
},
{
"close": 93.6345,
"date": "2025-02-04",
"high": 95.1545,
"low": 91.0128,
"open": 92.2928,
"value": 93.6345,
"volume": 1562
},
{
"close": 93.3624,
"date": "2025-02-05",
"high": 94.5624,
"low": 90.3642,
"open": 91.7342,
"value": 93.3624,
"volume": 1607
},
{
"close": 93.3458,
"date": "2025-02-06",
"high": 94.6258,
"low": 90.6009,
"open": 91.7009,
"value": 93.3458,
"volume": 1645
},
{
"close": 93.6128,
"date": "2025-02-07",
"high": 94.9728,
"low": 91.0527,
"open": 92.2427,
"value": 93.6128,
"volume": 1678
},
{
"close": 94.1706,
"date": "2025-02-08",
"high": 95.6106,
"low": 92.0536,
"open": 93.3336,
"value": 94.1706,
"volume": 1706
},
{
"close": 95.0024,
"date": "2025-02-09",
"high": 96.5224,
"low": 93.5031,
"open": 94.8731,
"value": 95.0024,
"volume": 1730
},
{
"close": 96.0672,
"date": "2025-02-10",
"high": 97.8995,
"low": 94.9672,
"open": 96.6995,
"value": 96.0672,
"volume": 1138
},
{
"close": 97.3012,
"date": "2025-02-11",
"high": 99.8932,
"low": 96.1112,
"open": 98.6132,
"value": 97.3012,
"volume": 1157
},
{
"close": 98.6223,
"date": "2025-02-12",
"high": 101.7664,
"low": 97.3423,
"open": 100.4064,
"value": 98.6223,
"volume": 1177
},
{
"close": 99.9361,
"date": "2025-02-13",
"high": 103.3339,
"low": 98.5661,
"open": 101.8939,
"value": 99.9361,
"volume": 1198
},
{
"close": 101.1441,
"date": "2025-02-14",
"high": 104.4588,
"low": 100.0441,
"open": 102.9388,
"value": 101.1441,
"volume": 1222
},
{
"close": 102.1532,
"date": "2025-02-15",
"high": 104.671,
"low": 100.9632,
"open": 103.471,
"value": 102.1532,
"volume": 1250
},
{
"close": 102.8851,
"date": "2025-02-16",
"high": 104.773,
"low": 101.6051,
"open": 103.493,
"value": 102.8851,
"volume": 1283
},
{
"close": 103.2854,
"date": "2025-02-17",
"high": 104.6454,
"low": 101.7045,
"open": 103.0745,
"value": 103.2854,
"volume": 1322
},
{
"close": 103.3306,
"date": "2025-02-18",
"high": 104.7706,
"low": 101.2366,
"open": 102.3366,
"value": 103.3306,
"volume": 1367
},
{
"close": 103.0322,
"date": "2025-02-19",
"high": 104.5522,
"low": 100.2392,
"open": 101.4292,
"value": 103.0322,
"volume": 1418
},
{
"close": 102.4378,
"date": "2025-02-20",
"high": 103.6378,
"low": 99.226,
"open": 100.506,
"value": 102.4378,
"volume": 1476
},
{
"close": 101.6282,
"date": "2025-02-21",
"high": 102.9082,
"low": 98.3323,
"open": 99.7023,
"value": 101.6282,
"volume": 1539
},
{
"close": 100.7105,
"date": "2025-02-22",
"high": 102.0705,
"low": 98.0185,
"open": 99.1185,
"value": 100.7105,
"volume": 1607
},
{
"close": 99.8085,
"date": "2025-02-23",
"high": 101.2485,
"low": 97.6227,
"open": 98.8127,
"value": 99.8085,
"volume": 1065
},
{
"close": 99.0497,
"date": "2025-02-24",
"high": 100.5697,
"low": 97.521,
"open": 98.801,
"value": 99.0497,
"volume": 1138
},
{
"close": 98.5523,
"date": "2025-02-25",
"high": 100.2666,
"low": 97.1823,
"open": 99.0666,
"value": 98.5523,
"volume": 1213
},
{
"close": 98.4121,
"date": "2025-02-26",
"high": 100.8514,
"low": 97.3121,
"open": 99.5714,
"value": 98.4121,
"volume": 1287
},
{
"close": 98.6906,
"date": "2025-02-27",
"high": 101.63,
"low": 97.5006,
"open": 100.27,
"value": 98.6906,
"volume": 1359
},
{
"close": 99.4076,
"date": "2025-02-28",
"high": 102.5602,
"low": 98.1276,
"open": 101.1202,
"value": 99.4076,
"volume": 1428
},
{
"close": 100.5364,
"date": "2025-03-01",
"high": 103.6082,
"low": 99.1664,
"open": 102.0882,
"value": 100.5364,
"volume": 1492
},
{
"close": 102.0054,
"date": "2025-03-02",
"high": 104.3483,
"low": 100.9054,
"open": 103.1483,
"value": 102.0054,
"volume": 1551
},
{
"close": 103.704,
"date": "2025-03-03",
"high": 105.5579,
"low": 102.514,
"open": 104.2779,
"value": 103.704,
"volume": 1604
},
{
"close": 105.4928,
"date": "2025-03-04",
"high": 106.8528,
"low": 104.1683,
"open": 105.4483,
"value": 105.4928,
"volume": 1651
},
{
"close": 107.218,
"date": "2025-03-05",
"high": 108.658,
"low": 105.247,
"open": 106.617,
"value": 107.218,
"volume": 1692
}
];
const options = {
"accessibility": {
"description": "A coherent daily market path with open, high, low, close, and volume. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Candlestick chart: A coherent daily market path with open, high, low, close, and volume"
},
"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": "date",
"type": "datum",
"value": "2025-02-02"
},
"text": "Point and range highlights · 2025-02-02"
}
],
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"create": {
"adaptive": {
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "date",
"type": "datum",
"value": "2025-02-02"
}
}
],
"interaction": {
"controls": {
"annotations": true,
"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": true,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"playback": {
"autoplay": false,
"field": "date",
"filter": true,
"interval": 1000,
"key": "date",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "date",
"mode": "multiple",
"toggle": true
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick",
"trigger": "axis"
}
},
"legend": {
"interactive": false,
"items": [
{
"id": "semantic-0",
"label": "Rising"
},
{
"id": "semantic-1",
"label": "Falling"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Candlestick",
"visible": true
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "A coherent daily market path with open, high, low, close, and volume",
"text": "Candlestick chart"
},
"width": "container",
"x": {
"field": "date",
"scale": {
"domain": [
"2026-01-01",
"2026-04-01"
]
},
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"scale": {
"domain": [
18,
38
]
},
"title": "Price",
"type": "quantitative"
}
};
Graflume.candlestick('#chart', data, options);Portable schema
{
"accessibility": {
"description": "A coherent daily market path with open, high, low, close, and volume. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Candlestick chart: A coherent daily market path with open, high, low, close, and volume"
},
"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": "date",
"type": "datum",
"value": "2025-02-02"
},
"text": "Point and range highlights · 2025-02-02"
}
],
"axes": {
"x": {
"format": {
"dateStyle": "short",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 4,
"spacing": 8
}
},
"y": {
"format": {
"currency": "USD",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"type": "currency"
}
}
},
"create": {
"adaptive": {
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "date",
"type": "datum",
"value": "2025-02-02"
}
}
],
"interaction": {
"controls": {
"annotations": true,
"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": true,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"playback": {
"autoplay": false,
"field": "date",
"filter": true,
"interval": 1000,
"key": "date",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"selection": {
"ariaLabel": "Interactive selection",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "date",
"mode": "multiple",
"toggle": true
},
"tooltip": {
"axis": "x",
"fields": [
{
"dateStyle": "long",
"field": "date",
"format": "date",
"label": "Date",
"timeZone": "UTC"
},
{
"field": "close",
"format": "number",
"label": "Close"
},
{
"field": "open",
"format": "number",
"label": "Open"
},
{
"field": "high",
"format": "number",
"label": "High"
},
{
"field": "low",
"format": "number",
"label": "Low"
}
],
"title": "Candlestick",
"trigger": "axis"
}
},
"legend": {
"interactive": false,
"items": [
{
"id": "semantic-0",
"label": "Rising"
},
{
"id": "semantic-1",
"label": "Falling"
}
],
"labels": {
"hide": "Hide",
"show": "Show"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Candlestick",
"visible": true
},
"locale": "en",
"mark": {
"fields": {
"close": "close",
"high": "high",
"low": "low",
"open": "open"
}
},
"padding": {
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "A coherent daily market path with open, high, low, close, and volume",
"text": "Candlestick chart"
},
"width": "container",
"x": {
"field": "date",
"scale": {
"domain": [
"2026-01-01",
"2026-04-01"
]
},
"title": "Trading day",
"type": "temporal"
},
"y": {
"field": "close",
"scale": {
"domain": [
18,
38
]
},
"title": "Price",
"type": "quantitative"
}
}Catalog
The source-controlled catalog maps callable modes in this family and compatibility identifiers to their canonical modes. This table contains executable entries only.
5 modes · 5 compatibility identifiers
| ID | Name | Quick API | mode | mark | renderer |
|---|---|---|---|---|---|
candlestick | Candlestick chart | candlestick() | default | candlestick | canvas |
heikin-ashi | Heikin-Ashi chart | heikinAshi() | heikin-ashi | financial | canvas |
high-low-close | High-low-close chart | highLowClose() | high-low-close | financial | canvas |
hollow-candlestick | Hollow candlestick chart | hollowCandlestick() | hollow-candlestick | financial | canvas |
open-high-low-close | Open-high-low-close chart | openHighLowClose() | open-high-low-close | financial | canvas |
| Identifier | Canonical mode ID |
|---|---|
candlestick | candlestick |
heikinashi | heikin-ashi |
hlc | high-low-close |
hollowcandlestick | hollow-candlestick |
ohlc | open-high-low-close |
Manual
ARIA · table fallbackCanvas ARIA metadata is paired with a text summary and table fallback.
standard · large · ultraStandard, large, and ultra profiles bound rendering work.