ARIA · table fallback접근성
Canvas ARIA 메타데이터에 텍스트 요약과 표 대체 표현을 함께 제공합니다.
Graflume · Alpha
매출 막대와 이익률 선처럼 단위가 다른 계층을 왼쪽 기본축과 오른쪽 보조축으로 비교합니다.
차트 계열 · 기본 차트 계열
매출 막대와 이익률 선처럼 단위가 다른 계층을 왼쪽 기본축과 오른쪽 보조축으로 비교합니다.
combo()graflumemultiple기본 구현
필수 데이터와 차트 고유 인코딩만 사용한 출발점입니다. 아래 코드를 펼치면 그대로 실행할 수 있습니다.
매출 막대와 이익률 선처럼 단위가 다른 계층을 왼쪽 기본축과 오른쪽 보조축으로 비교합니다.
상태불러오는 중
minimal-implementation불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
}공통 기능
기능 탭을 선택해 헤더, 도구 설명, 테마, 범례, 강조, 말풍선, 선택, 화면 제어와 접근성을 하나씩 적용한 결과와 코드를 비교하세요. 데이터 표식 위에 마우스를 올리세요. 지원하는 차트에서는 축을 따라 커서를 움직이면 가장 가까운 값을 볼 수 있습니다. 모든 정확한 값은 아래 표에서 확인할 수 있습니다.
차트 안에 제목과 보조 설명을 넣어 무엇을 보여주는지 먼저 밝힙니다.
상태불러오는 중
header불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"title": {
"subtitle": "Combo chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: flat portable layers · independent x/x2/y/y2 domains.",
"text": "Combination"
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"title": {
"subtitle": "Combo chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: flat portable layers · independent x/x2/y/y2 domains.",
"text": "Combination"
},
"width": "container"
}마크 또는 축을 가리키면 정확한 값을 보여줍니다. 날짜·시간은 locale, 형식과 시간대를 사용자가 선언형 옵션으로 정할 수 있습니다.
상태불러오는 중
tooltip불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · 도구 설명",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"interaction": {
"hover": true,
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · 도구 설명",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
}상단 선택기의 현재 내장 테마를 옵션에 적용하고 모든 활성 예제를 함께 갱신합니다.
상태불러오는 중
theme불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"theme": "graflume-light",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"theme": "graflume-light",
"width": "container"
}계열, 범주 또는 연속 값의 시각적 의미를 차트와 함께 설명합니다.
상태불러오는 중
legendlegend · layers · interactive불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "숨기기",
"show": "표시"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination · 범례",
"visible": true
},
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "숨기기",
"show": "표시"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination · 범례",
"visible": true
},
"locale": "ko",
"width": "container"
}대표 데이터나 공간 위치를 시각적으로 강조해 읽을 지점을 안내합니다.
상태불러오는 중
highlighthighlights[] · datum · category불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
}
}
],
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
}
}
],
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
}자동 충돌 회피와 다국어 줄바꿈을 사용하는 설명 말풍선을 표시합니다.
상태불러오는 중
calloutannotations[] · datum · category · callout · placement:auto불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"annotations": [
{
"connector": {
"visible": true
},
"detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
},
"text": "포인트·범위 하이라이트 · Jul"
}
],
"height": 620,
"interaction": {
"controls": {
"annotations": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
}
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"annotations": [
{
"connector": {
"visible": true
},
"detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
},
"text": "포인트·범위 하이라이트 · Jul"
}
],
"height": 620,
"interaction": {
"controls": {
"annotations": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
}
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
}데이터를 선택하고 토글하며 배경이나 Esc 키로 안전하게 해제합니다.
상태불러오는 중
selectionselection · multiple · toggle불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "대화형 선택",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "category",
"mode": "multiple",
"toggle": true
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"interaction": {
"selection": {
"ariaLabel": "대화형 선택",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "category",
"mode": "multiple",
"toggle": true
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
}확대, 이동, 초기화, 투영, 전체 화면과 PNG 내보내기 메뉴를 각각 표시하거나 숨깁니다. controls: false이면 제어 막대 전체를 제거합니다.
상태불러오는 중
controls불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"playback": false,
"reset": true,
"zoom": true
},
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"padding": {
"top": 52
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"playback": false,
"reset": true,
"zoom": true
},
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"padding": {
"top": 52
},
"width": "container"
}ARIA 설명, 키보드 안내와 의미 있는 데이터 표를 함께 제공합니다.
상태불러오는 중
accessibility불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination · 접근성 example"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination · 접근성 example"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"width": "container"
}차트 고유 기능
Graflume 공개 카탈로그에 등록된 이 계열의 모든 실행 모드입니다. 각 탭은 독립 데이터, 옵션, Quick API와 지원 기능 근거를 가집니다.
Combo chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: flat portable layers · independent x/x2/y/y2 domains.
상태불러오는 중
comboflat portable layersindependent x/x2/y/y2 domainscompatible shared primary x/y domains and independent child axes/legendsPareto presetshared multi-view axes/legends/colorbarslayer transforms불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination example"
},
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"axisId": "y",
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"axisId": "y2",
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Combo chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: flat portable layers · independent x/x2/y/y2 domains.",
"text": "Combination"
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination example"
},
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"axisId": "y",
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"axisId": "y2",
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Combo chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: flat portable layers · independent x/x2/y/y2 domains.",
"text": "Combination"
},
"width": "container"
}Pareto chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: z-index · closed Canvas layer/facet/repeat/concat/inset composition.
상태불러오는 중
paretoz-indexclosed Canvas layer/facet/repeat/concat/inset compositionscoped multi-view semantics and lineagenamed axeslinked view statelayer clipping불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | valuequantitative |
|---|---|
| Insights | 86 |
| Dashboards | 78 |
| Reports | 69 |
| Alerts | 61 |
| Models | 48 |
| Exports | 37 |
브라우저 API
const data = [
{
"category": "Insights",
"high": 91,
"low": 81,
"previous": 74,
"target": 88,
"value": 86,
"width": 24
},
{
"category": "Dashboards",
"high": 84,
"low": 72,
"previous": 69,
"target": 82,
"value": 78,
"width": 21
},
{
"category": "Reports",
"high": 76,
"low": 63,
"previous": 65,
"target": 74,
"value": 69,
"width": 18
},
{
"category": "Alerts",
"high": 68,
"low": 55,
"previous": 48,
"target": 66,
"value": 61,
"width": 15
},
{
"category": "Models",
"high": 56,
"low": 42,
"previous": 41,
"target": 55,
"value": 48,
"width": 12
},
{
"category": "Exports",
"high": 45,
"low": 31,
"previous": 34,
"target": 44,
"value": 37,
"width": 10
}
];
const options = {
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination · Pareto chart example"
},
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · Pareto chart",
"trigger": "axis"
}
},
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Pareto chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: z-index · closed Canvas layer/facet/repeat/concat/inset composition.",
"text": "Combination · Pareto chart"
},
"width": "container",
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
};
Graflume.pareto('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination · Pareto chart example"
},
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · Pareto chart",
"trigger": "axis"
}
},
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Pareto chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: z-index · closed Canvas layer/facet/repeat/concat/inset composition.",
"text": "Combination · Pareto chart"
},
"width": "container",
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}시간 필드와 안정적인 키를 기준으로 프레임을 재생하고, 진입·변경·퇴장을 부드럽게 전환합니다.
상태불러오는 중
playbacksmooth-transitions불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
periodordinal | revenuequantitative | marginRatequantitative |
|---|---|---|
| Q1 | 128000000 | 0.18 |
| Q2 | 156000000 | 0.22 |
| Q3 | 149000000 | 0.19 |
| Q4 | 184000000 | 0.27 |
브라우저 API
const data = [
{
"marginRate": 0.18,
"period": "Q1",
"revenue": 128000000
},
{
"marginRate": 0.22,
"period": "Q2",
"revenue": 156000000
},
{
"marginRate": 0.19,
"period": "Q3",
"revenue": 149000000
},
{
"marginRate": 0.27,
"period": "Q4",
"revenue": 184000000
}
];
const options = {
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"height": 620,
"interaction": {
"controls": {
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"playback": true
},
"hover": true,
"playback": {
"autoplay": false,
"field": "period",
"filter": true,
"interval": 1000,
"key": "period",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · 재생과 전환",
"trigger": "axis"
}
},
"layers": [
{
"id": "revenue",
"mark": {
"type": "bar"
},
"x": {
"axisId": "x",
"field": "period",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"type": "ordinal"
},
"y": {
"axisId": "y",
"field": "revenue",
"scale": {
"domain": [
0,
200000000
]
},
"type": "quantitative"
}
},
{
"id": "margin",
"mark": {
"point": true,
"type": "line"
},
"x": {
"axisId": "x",
"field": "period",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"type": "ordinal"
},
"y": {
"axisId": "y2",
"field": "marginRate",
"scale": {
"domain": [
0,
0.3
]
},
"type": "quantitative"
}
}
],
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 24
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"height": 620,
"interaction": {
"controls": {
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"playback": true
},
"hover": true,
"playback": {
"autoplay": false,
"field": "period",
"filter": true,
"interval": 1000,
"key": "period",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · 재생과 전환",
"trigger": "axis"
}
},
"layers": [
{
"id": "revenue",
"mark": {
"type": "bar"
},
"x": {
"axisId": "x",
"field": "period",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"type": "ordinal"
},
"y": {
"axisId": "y",
"field": "revenue",
"scale": {
"domain": [
0,
200000000
]
},
"type": "quantitative"
}
},
{
"id": "margin",
"mark": {
"point": true,
"type": "line"
},
"x": {
"axisId": "x",
"field": "period",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"type": "ordinal"
},
"y": {
"axisId": "y2",
"field": "marginRate",
"scale": {
"domain": [
0,
0.3
]
},
"type": "quantitative"
}
}
],
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 24
},
"width": "container"
}극단 사례
성공할 수 있는 유효 데이터 안에서 수치 범위, 희소 구조와 대용량 입력을 검증합니다. 각 탭은 필요할 때만 데이터를 만들며 잘못된 값은 조용히 보정하지 않습니다.
0과 매우 작은 유한값부터 매우 큰 유한값까지 함께 넣어 자동 도메인, 정밀도와 기하가 무너지지 않는지 확인합니다. NaN과 Infinity는 의도적으로 거부됩니다. 유한값과 축 도메인을 보존하는 데이터 무결성 규칙 2개를 적용합니다.
상태불러오는 중
extreme-rangeextreme-smallextreme-largezeromixed-signbudget:marks<=6불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | -1e-09 | -1e+12 |
| Feb | 0 | -1e-09 |
| Mar | 1e+12 | 0 |
| Apr | 1e-09 | 1e+12 |
| May | 1e+06 | 1e-09 |
| Jun | -1e+12 | 1e+06 |
브라우저 API
const data = [
{
"category": "Jan",
"target": -1e-9,
"value": -1000000000000
},
{
"category": "Feb",
"target": 0,
"value": -1e-9
},
{
"category": "Mar",
"target": 1000000000000,
"value": 0
},
{
"category": "Apr",
"target": 1e-9,
"value": 1000000000000
},
{
"category": "May",
"target": 1000000,
"value": 1e-9
},
{
"category": "Jun",
"target": -1000000000000,
"value": 1000000
}
];
const options = {
"accessibility": {
"description": "Monthly active teams compared with the operating target. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Combination"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"title": {
"subtitle": "edge case · range",
"text": "Combination"
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "Monthly active teams compared with the operating target. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Combination"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"title": {
"subtitle": "edge case · range",
"text": "Combination"
},
"width": "container"
}중복, 결측, 희소성, 순서 뒤바뀜 중 이 계열에서 의미가 정의된 구조만 실행합니다. 잘못된 참조나 깨진 튜플을 성공 예제로 위장하지 않습니다. 결측·중복·순서의 의미를 보존하는 구조 규칙 3개를 적용합니다.
상태불러오는 중
irregular-structuresparseduplicate-keynullbudget:marks<=7불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | — |
| Jan | 50 | 48 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
브라우저 API
const data = [
{
"category": "Jan",
"target": 50,
"value": 48
},
{
"category": "Feb",
"target": 54.6,
"value": null
},
{
"category": "Jan",
"target": 50,
"value": 48
},
{
"category": "Mar",
"target": 59.2,
"value": 51
},
{
"category": "Apr",
"target": 63.8,
"value": 59
},
{
"category": "May",
"target": 68.4,
"value": 66
},
{
"category": "Jun",
"target": 73,
"value": 70
}
];
const options = {
"accessibility": {
"description": "Monthly active teams compared with the operating target. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Combination · 희소·불규칙 구조"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"title": {
"subtitle": "edge case · structure",
"text": "Combination · 희소·불규칙 구조"
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "Monthly active teams compared with the operating target. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Combination · 희소·불규칙 구조"
},
"height": 620,
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"locale": "ko",
"title": {
"subtitle": "edge case · structure",
"text": "Combination · 희소·불규칙 구조"
},
"width": "container"
}결정적인 압축 레시피를 탭을 열 때만 생성합니다. Graflume의 성능 프로필이 입력량에 맞춰 표식 수, 적중 검사와 애니메이션 비용을 제한합니다. 결정적 생성과 출력 제한을 보장하는 대용량 규칙 6개를 적용합니다. 이 계열은 논리 입력 60,000 행를 생성하고 복합 표식 출력을 최대 30,000개로 제한합니다.
상태불러오는 중
high-row-cardinalityall-input-rows-generatedall-input-rows-processeddeterministic-generationbounded-renderinginput:60000zoom-pan-resetbudget:combined-marks<=30000legend · layers · interactivehighlights[] · datum · categoryannotations[] · datum · category · callout · placement:auto불러오는 중
브라우저 API
const recipe = {
"cardinality": {
"axes": {},
"sourceRows": 60000,
"unit": "rows"
},
"expectedInvariants": [
"finite-json",
"layer-axis-identity-preserved"
],
"id": "time-signal",
"initialView": {
"kind": "domain",
"zoom": 1
},
"outputBudget": {
"maximum": 30000,
"resource": "combined-marks"
},
"parameters": {
"family": "combination",
"nullableFields": [
"value"
],
"positiveFields": [],
"scenario": "volume",
"valueFields": [
"value",
"target"
],
"valuePolicy": "signed"
},
"preview": {
"maximumRows": 12,
"method": "quantiles"
},
"reduction": {
"method": "time-bin-lttb",
"stage": "bin"
},
"seed": 289478544,
"shape": "rows",
"version": 2
};
const { data, previewRows, plan } = Graflume.materializeDemoRecipe(recipe);
const options = {
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination · 대용량 데이터"
},
"annotations": [
{
"connector": {
"visible": true
},
"detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "category",
"type": "datum",
"value": "2025-02"
},
"text": "포인트·범위 하이라이트 · 2025-02"
}
],
"create": {
"adaptive": {
"environment": {
"rowCount": 60000
},
"largeDataNavigation": true,
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "2025-02"
}
}
],
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · 대용량 데이터",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "숨기기",
"show": "표시"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination · 대용량 데이터",
"visible": true
},
"locale": "ko",
"padding": {
"top": 52
},
"performance": "auto",
"theme": "graflume-light",
"title": {
"subtitle": "Monthly active teams compared with the operating target · 60,000 logical rows, screen-aware detail",
"text": "Combination · 대용량 데이터"
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
"label": "Combination · 대용량 데이터"
},
"annotations": [
{
"connector": {
"visible": true
},
"detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "category",
"type": "datum",
"value": "2025-02"
},
"text": "포인트·범위 하이라이트 · 2025-02"
}
],
"create": {
"adaptive": {
"environment": {
"rowCount": 60000
},
"largeDataNavigation": true,
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "2025-02"
}
}
],
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination · 대용량 데이터",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "숨기기",
"show": "표시"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination · 대용량 데이터",
"visible": true
},
"locale": "ko",
"padding": {
"top": 52
},
"performance": "auto",
"theme": "graflume-light",
"title": {
"subtitle": "Monthly active teams compared with the operating target · 60,000 logical rows, screen-aware detail",
"text": "Combination · 대용량 데이터"
},
"width": "container"
}극단 환경
기기 이름을 추측하지 않고 컨테이너 크기, 입력 방식, 표시 능력과 사용자 선호를 조합합니다. 모바일·워치·전자종이·흑백·도트 화면과 표준 기반 극단 환경을 같은 차트에서 비교하세요.
컨테이너 폭과 높이에 따라 축, 범례, 설명과 조작부를 자동 재배치합니다.
960×540 · adaptive.profiles=responsive-fluidzoom-reflowshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial세로형 작은 화면에서 44px 터치 대상, 탭 도구 설명과 접힌 보조 정보를 우선합니다.
390×844 · adaptive.profiles=mobile-touchzoom-reflowcoarse-touchvirtual-keyboardshape-rectangledisplay-colorinput-coarsemotion-fullrenderer-canvas-spatial원형 또는 매우 작은 화면에서는 핵심 표식과 값, 단계형 조작만 남기고 나머지는 아래 설명으로 재배치합니다.
184×224 · adaptive.profiles=smartwatchzoom-reflowreduced-effectscoarse-touchlow-resourcecutout-roundshape-rounddisplay-colorinput-coarsemotion-reducedrenderer-canvas-spatialviewport-tiny낮은 갱신률과 잔상 가능성을 고려해 정적 상태, 높은 명암과 데이터 표를 우선합니다.
758×1024 · adaptive.profiles=ebook-paperprint-pagedreduced-effectslow-resourceshape-pageddisplay-e-inkinput-keyboardmotion-staticrenderer-canvas-spatial색만으로 계열을 구분하지 않고 선, 표식, 패턴, 라벨과 표를 함께 사용합니다.
640×400 · adaptive.profiles=monochromereduced-effectsshape-rectangledisplay-monochromeinput-finemotion-reducedrenderer-canvas-spatial낮은 해상도에서는 표식 수와 장식을 줄이고 굵은 선, 정수 라벨과 단계형 확대를 사용합니다.
320×240 · adaptive.profiles=dot-matrixzoom-reflowreduced-effectskeyboard-switchlow-resourceshape-rectangledisplay-gridinput-keyboardmotion-staticrenderer-canvas-spatialviewport-tiny320 CSS px 등가 폭에서 본문은 한 축으로 재배치하고 차트만 자체 확대·이동을 허용합니다.
320×480 · adaptive.profiles=zoom-reflowzoom-reflowshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial힌지와 화면 분할 영역을 가로지르지 않도록 차트와 설명을 독립 세그먼트로 재배치합니다.
720×640 · adaptive.profiles=foldable-dualfoldable-dualshape-dualdisplay-colorinput-finemotion-fullrenderer-canvas-spatial호버가 없는 원거리 화면에서 큰 초점 표시와 방향키, Enter, Escape 조작을 제공합니다.
1920×1080 · adaptive.profiles=tv-remotetv-remoteshape-rectangledisplay-colorinput-remotemotion-fullrenderer-canvas-spatial조작부 대신 정적 차트, 설명과 표를 함께 배치하고 페이지 중간 분할을 피합니다.
794×1123 · adaptive.profiles=print-pagedprint-pagedshape-pageddisplay-colorinput-finemotion-staticrenderer-canvas-spatial시스템 색과 테두리를 존중하고 패턴, 표식과 텍스트를 중복 단서로 유지합니다.
640×400 · adaptive.profiles=forced-colorsforced-colorsshape-rectangledisplay-high-contrastinput-finemotion-fullrenderer-canvas-spatial전환을 즉시 끝내고 불투명 배경과 지연 로드를 사용해 움직임과 투명도 부담을 줄입니다.
640×400 · adaptive.profiles=reduced-effectsreduced-effectsshape-rectangledisplay-colorinput-finemotion-reducedrenderer-canvas-spatial호버 없이 탭으로 값을 확인하고 실제 조작 대상은 44px 이상, 확대·축소는 명시 버튼으로 제공합니다.
390×844 · adaptive.profiles=coarse-touchcoarse-touchshape-rectangledisplay-colorinput-coarsemotion-fullrenderer-canvas-spatial드래그 전용 기능 없이 Tab, 방향키, Enter, Space, Escape로 모든 조작에 도달합니다.
640×400 · adaptive.profiles=keyboard-switchkeyboard-switchshape-rectangledisplay-colorinput-keyboardmotion-fullrenderer-canvas-spatial적은 메모리와 느린 연결에서는 점진 렌더링, 샘플링, 취소 가능한 작업과 정적 대체를 우선합니다.
640×400 · adaptive.profiles=low-resourcelow-resourceshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial본문과 탭은 RTL 논리 방향을 따르되 축, 코드와 데이터 식별자는 기술적 LTR 순서를 유지합니다.
640×400 · adaptive.profiles=rtlrtlshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial세로쓰기 설명은 재배치하되 차트와 기술 표면은 독립적인 가로 패널로 유지합니다.
640×400 · adaptive.profiles=vertical-writingvertical-writingshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial차트를 무한히 늘이지 않고 읽기 가능한 최대 폭, 패널 분할과 큰 라벨을 사용합니다.
1920×720 · adaptive.profiles=ultrawide-projectionultrawide-projectionshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial짧고 긴 설명, 의미 있는 표와 상태를 제공해 Canvas나 색을 정보의 유일한 경로로 만들지 않습니다.
640×400 · adaptive.profiles=screenreader-braillescreenreader-brailleshape-nonvisualdisplay-colorinput-nonvisualmotion-fullrenderer-canvas-spatial스크립트가 꺼져도 검증된 정적 미리보기, 설명과 접힌 행 데이터 표가 핵심 정보를 보존합니다.
640×400 · adaptive.profiles=no-scriptno-scriptshape-nonvisualdisplay-colorinput-finemotion-staticrenderer-static-fallbackXR 전용 API가 없어도 일반 2D 또는 WebGL 패널로 안전하게 돌아가며 깊이 단서를 텍스트와 표로 중복합니다.
640×400 · adaptive.profiles=spatial-xrspatial-xrshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatialsafe-area와 원형 경계를 피해 제목, 표식, 조작부가 잘리지 않게 안쪽으로 재배치합니다.
184×224 · adaptive.profiles=cutout-roundcutout-roundshape-rounddisplay-colorinput-finemotion-fullrenderer-canvas-spatialviewport-tiny가상 키보드가 화면을 줄여도 초점 조작, 차트와 현재 설명이 가려지지 않게 다시 배치합니다.
390×560 · adaptive.profiles=virtual-keyboardvirtual-keyboardshape-rectangledisplay-colorinput-finemotion-fullrenderer-canvas-spatial위 프로필 탭을 선택하면 같은 데이터와 ChartSpec을 유지한 채 화면 크기, 입력 방식, 표시 능력과 사용자 선호에 맞춰 차트를 다시 구성합니다.
상태불러오는 중
adaptivecapability-drivenno-user-agent-branchinglegend · layers · interactivehighlights[] · datum · categoryannotations[] · datum · category · callout · placement:autoselection · multiple · toggle불러오는 중
행 데이터와 zero-copy TypedArray 열은 하나의 데이터 계약을 공유합니다.
categoryordinal | targetquantitative | valuequantitative |
|---|---|---|
| Jan | 50 | 48 |
| Feb | 54.6 | 53 |
| Mar | 59.2 | 51 |
| Apr | 63.8 | 59 |
| May | 68.4 | 66 |
| Jun | 73 | 70 |
| Jul | 77.6 | 76 |
| Aug | 82.2 | 82 |
| Sep | 86.8 | 80 |
| Oct | 91.4 | 89 |
| Nov | 96 | 96 |
| Dec | 100.6 | 104 |
브라우저 API
const data = [
{
"base": 37.44,
"category": "Jan",
"close": 48,
"conversion": 18,
"date": "2026-01-01",
"direction": 28,
"down": 78,
"high": 54,
"low": 44,
"lower": 43,
"magnitude": 7,
"minus": 39,
"open": 44,
"plus": 24,
"previous": 44,
"price": 72,
"radius": 20.560000000000002,
"resistance": 57,
"secondary": 36,
"series": "Before launch",
"signal": 48.2,
"speed": 18,
"support": 40,
"target": 50,
"title": "",
"up": 54,
"upper": 55,
"value": 48,
"volume": 1250,
"width": 2.8,
"z": 8
},
{
"base": 41.34,
"category": "Feb",
"close": 53,
"conversion": 20.28,
"date": "2026-02-01",
"direction": 59,
"down": 76.3,
"high": 60,
"low": 48,
"lower": 47,
"magnitude": 9.4,
"minus": 37.9,
"open": 48,
"plus": 25.6,
"previous": 48,
"price": 75.41,
"radius": 21.66,
"resistance": 62,
"secondary": 41.97,
"series": "Before launch",
"signal": 53.16,
"speed": 20.7,
"support": 45,
"target": 54.6,
"title": "",
"up": 56.4,
"upper": 61,
"value": 53,
"volume": 1478,
"width": 3.6999999999999997,
"z": 9.4
},
{
"base": 39.78,
"category": "Mar",
"close": 51,
"conversion": 22.16,
"date": "2026-03-01",
"direction": 90,
"down": 74.6,
"high": 59,
"low": 45,
"lower": 44,
"magnitude": 11.8,
"minus": 36.8,
"open": 53,
"plus": 27.2,
"previous": 53,
"price": 77.85,
"radius": 21.22,
"resistance": 60,
"secondary": 46.2,
"series": "Before launch",
"signal": 51.82,
"speed": 23.4,
"support": 43,
"target": 59.2,
"title": "Spring release",
"up": 58.8,
"upper": 60,
"value": 51,
"volume": 1706,
"width": 4.6,
"z": 10.8
},
{
"base": 46.02,
"category": "Apr",
"close": 59,
"conversion": 23.4,
"date": "2026-04-01",
"direction": 121,
"down": 72.9,
"high": 65,
"low": 55,
"lower": 54,
"magnitude": 14.2,
"minus": 35.7,
"open": 51,
"plus": 28.8,
"previous": 51,
"price": 78.81,
"radius": 22.98,
"resistance": 68,
"secondary": 48,
"series": "Before launch",
"signal": 59.48,
"speed": 26.1,
"support": 51,
"target": 63.8,
"title": "",
"up": 61.2,
"upper": 66,
"value": 59,
"volume": 1724,
"width": 5.5,
"z": 12.2
},
{
"base": 51.48,
"category": "May",
"close": 66,
"conversion": 23.95,
"date": "2026-05-01",
"direction": 152,
"down": 71.2,
"high": 73,
"low": 61,
"lower": 60,
"magnitude": 16.6,
"minus": 34.6,
"open": 59,
"plus": 30.4,
"previous": 59,
"price": 78.47,
"radius": 24.52,
"resistance": 75,
"secondary": 48.17,
"series": "Before launch",
"signal": 66.24,
"speed": 28.8,
"support": 58,
"target": 68.4,
"title": "",
"up": 63.6,
"upper": 74,
"value": 66,
"volume": 1952,
"width": 2.8,
"z": 13.6
},
{
"base": 54.6,
"category": "Jun",
"close": 70,
"conversion": 24.03,
"date": "2026-06-01",
"direction": 183,
"down": 69.5,
"high": 78,
"low": 64,
"lower": 63,
"magnitude": 7,
"minus": 33.5,
"open": 66,
"plus": 32,
"previous": 66,
"price": 77.63,
"radius": 25.4,
"resistance": 79,
"secondary": 48.47,
"series": "Before launch",
"signal": 70.3,
"speed": 31.5,
"support": 62,
"target": 73,
"title": "",
"up": 66,
"upper": 79,
"value": 70,
"volume": 2180,
"width": 3.6999999999999997,
"z": 15
},
{
"base": 59.28,
"category": "Jul",
"close": 76,
"conversion": 24.01,
"date": "2026-07-01",
"direction": 214,
"down": 67.8,
"high": 82,
"low": 72,
"lower": 71,
"magnitude": 9.4,
"minus": 32.4,
"open": 70,
"plus": 33.6,
"previous": 70,
"price": 77.31,
"radius": 26.72,
"resistance": 85,
"secondary": 50.62,
"series": "After launch",
"signal": 76.16,
"speed": 34.2,
"support": 68,
"target": 77.6,
"title": "",
"up": 68.4,
"upper": 83,
"value": 76,
"volume": 2198,
"width": 4.6,
"z": 16.4
},
{
"base": 63.96,
"category": "Aug",
"close": 82,
"conversion": 24.31,
"date": "2026-08-01",
"direction": 245,
"down": 66.1,
"high": 89,
"low": 77,
"lower": 76,
"magnitude": 11.8,
"minus": 31.299999999999997,
"open": 76,
"plus": 35.2,
"previous": 76,
"price": 78.31,
"radius": 28.04,
"resistance": 91,
"secondary": 55.17,
"series": "After launch",
"signal": 82.02,
"speed": 36.900000000000006,
"support": 74,
"target": 82.2,
"title": "",
"up": 70.8,
"upper": 90,
"value": 82,
"volume": 2426,
"width": 5.5,
"z": 17.799999999999997
},
{
"base": 62.4,
"category": "Sep",
"close": 80,
"conversion": 25.21,
"date": "2026-09-01",
"direction": 276,
"down": 64.4,
"high": 88,
"low": 74,
"lower": 73,
"magnitude": 14.2,
"minus": 30.2,
"open": 82,
"plus": 36.8,
"previous": 82,
"price": 80.78,
"radius": 27.6,
"resistance": 89,
"secondary": 61.27,
"series": "After launch",
"signal": 80.68,
"speed": 39.6,
"support": 72,
"target": 86.8,
"title": "Team plan launch",
"up": 73.2,
"upper": 89,
"value": 80,
"volume": 2444,
"width": 2.8,
"z": 19.2
},
{
"base": 69.42,
"category": "Oct",
"close": 89,
"conversion": 26.8,
"date": "2026-10-01",
"direction": 307,
"down": 62.7,
"high": 95,
"low": 85,
"lower": 84,
"magnitude": 16.6,
"minus": 29.1,
"open": 80,
"plus": 38.4,
"previous": 80,
"price": 84.2,
"radius": 29.580000000000002,
"resistance": 98,
"secondary": 67.07,
"series": "After launch",
"signal": 89.24,
"speed": 42.3,
"support": 81,
"target": 91.4,
"title": "",
"up": 75.6,
"upper": 96,
"value": 89,
"volume": 2672,
"width": 3.6999999999999997,
"z": 20.6
},
{
"base": 74.88,
"category": "Nov",
"close": 96,
"conversion": 28.94,
"date": "2026-11-01",
"direction": 338,
"down": 61,
"high": 103,
"low": 91,
"lower": 90,
"magnitude": 7,
"minus": 28,
"open": 89,
"plus": 40,
"previous": 89,
"price": 87.6,
"radius": 31.12,
"resistance": 105,
"secondary": 70.96,
"series": "After launch",
"signal": 96,
"speed": 45,
"support": 88,
"target": 96,
"title": "",
"up": 78,
"upper": 104,
"value": 96,
"volume": 2900,
"width": 4.6,
"z": 22
},
{
"base": 81.12,
"category": "Dec",
"close": 104,
"conversion": 31.27,
"date": "2026-12-01",
"direction": 9,
"down": 59.3,
"high": 112,
"low": 98,
"lower": 97,
"magnitude": 9.4,
"minus": 26.9,
"open": 96,
"plus": 41.6,
"previous": 96,
"price": 90.01,
"radius": 32.879999999999995,
"resistance": 113,
"secondary": 72.44,
"series": "After launch",
"signal": 103.66,
"speed": 47.7,
"support": 96,
"target": 100.6,
"title": "",
"up": 80.4,
"upper": 113,
"value": 104,
"volume": 2918,
"width": 5.5,
"z": 23.4
}
];
const options = {
"accessibility": {
"description": "Monthly active teams compared with the operating target. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Combo chart: Monthly active teams compared with the operating target"
},
"annotations": [
{
"connector": {
"visible": true
},
"detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
},
"text": "포인트·범위 하이라이트 · Jul"
}
],
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"create": {
"adaptive": {
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
}
}
],
"interaction": {
"controls": {
"annotations": true,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": "period",
"filter": true,
"interval": 1000,
"key": "period",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"selection": {
"ariaLabel": "대화형 선택",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "category",
"mode": "multiple",
"toggle": true
},
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"scale": {
"domain": [
0,
200000000
]
},
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"scale": {
"domain": [
0,
0.3
]
},
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "숨기기",
"show": "표시"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination",
"visible": true
},
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Monthly active teams compared with the operating target",
"text": "Combo chart"
},
"width": "container"
};
Graflume.combo('#chart', data, options);이식 가능한 스키마
{
"accessibility": {
"description": "Monthly active teams compared with the operating target. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
"label": "Combo chart: Monthly active teams compared with the operating target"
},
"annotations": [
{
"connector": {
"visible": true
},
"detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
"id": "manual-callout",
"placement": "auto",
"style": {
"maxWidth": 220,
"padding": 8
},
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
},
"text": "포인트·범위 하이라이트 · Jul"
}
],
"axes": {
"x": {
"labels": {
"orientation": "horizontal"
},
"position": "bottom"
},
"y": {
"format": {
"currency": "KRW",
"currencyDisplay": "narrowSymbol",
"fractionDigits": 0,
"notation": "compact",
"type": "currency"
},
"position": "left",
"title": {
"padding": 58,
"text": "Revenue (KRW)"
}
},
"y2": {
"format": {
"fractionDigits": 1,
"type": "percent"
},
"offset": 8,
"position": "right",
"title": {
"padding": 58,
"text": "Margin rate"
}
}
},
"create": {
"adaptive": {
"profiles": "auto"
}
},
"height": 620,
"highlights": [
{
"id": "manual-focus",
"padding": 7,
"target": {
"field": "category",
"type": "datum",
"value": "Jul"
}
}
],
"interaction": {
"controls": {
"annotations": true,
"export": true,
"fullscreen": true,
"labels": {
"controls": "차트 조작",
"enterFullscreen": "전체 화면 열기",
"exitFullscreen": "전체 화면 닫기",
"exportPng": "PNG 다운로드",
"hideAnnotations": "설명 말풍선 숨기기",
"loop": "반복 재생",
"nextFrame": "다음 프레임",
"pause": "일시 정지",
"play": "재생",
"previousFrame": "이전 프레임",
"reset": "보기 초기화",
"seek": "재생 위치",
"showAnnotations": "설명 말풍선 표시",
"speed": "재생 속도",
"zoomIn": "확대",
"zoomOut": "축소"
},
"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": "period",
"filter": true,
"interval": 1000,
"key": "period",
"loop": false,
"mode": "cumulative",
"rate": 1,
"transition": {
"duration": 600,
"easing": "ease-in-out"
},
"windowSize": 1
},
"selection": {
"ariaLabel": "대화형 선택",
"clearOnBackground": true,
"clearOnEscape": true,
"highlight": {
"padding": 5
},
"key": "category",
"mode": "multiple",
"toggle": true
},
"tooltip": {
"axis": "x",
"fields": [
{
"field": "period",
"format": "auto",
"label": "기간"
},
{
"field": "revenue",
"format": "number",
"fractionDigits": 0,
"label": "매출",
"prefix": "₩"
},
{
"field": "marginRate",
"format": "percent",
"fractionDigits": 1,
"label": "이익률"
}
],
"title": "Combination",
"trigger": "axis"
}
},
"layers": [
{
"id": "volume",
"mark": {
"opacity": 0.72,
"type": "bar"
},
"x": {
"field": "category",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "target",
"scale": {
"domain": [
0,
200000000
]
},
"title": "Active teams",
"type": "quantitative"
}
},
{
"id": "actual",
"mark": {
"point": true,
"type": "line"
},
"x": {
"field": "category",
"scale": {
"domain": [
"Q1",
"Q2",
"Q3",
"Q4"
]
},
"title": "Month",
"type": "ordinal"
},
"y": {
"field": "value",
"scale": {
"domain": [
0,
0.3
]
},
"title": "Active teams",
"type": "quantitative"
}
}
],
"legend": {
"interactive": true,
"items": [
{
"id": "volume",
"label": "Volume",
"layerId": "volume"
},
{
"id": "actual",
"label": "Actual",
"layerId": "actual"
}
],
"labels": {
"hide": "숨기기",
"show": "표시"
},
"maxItems": 8,
"mode": "layers",
"orientation": "horizontal",
"position": "bottom",
"title": "Combination",
"visible": true
},
"locale": "ko",
"padding": {
"bottom": 58,
"left": 86,
"right": 94,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Monthly active teams compared with the operating target",
"text": "Combo chart"
},
"width": "container"
}Catalog
The source-controlled catalog maps callable modes in this family and compatibility identifiers to their canonical modes. This table contains executable entries only.
2 modes · 1 compatibility identifiers
| ID | Name | Quick API | mode | mark | renderer |
|---|---|---|---|---|---|
combo | Combo chart | combo() | default | multiple | canvas |
pareto | Pareto chart | pareto() | pareto | pareto | canvas |
| Identifier | Canonical mode ID |
|---|---|
pareto | pareto |
매뉴얼
ARIA · table fallbackCanvas ARIA 메타데이터에 텍스트 요약과 표 대체 표현을 함께 제공합니다.
standard · large · ultrastandard·large·ultra 프로필은 렌더링 작업량을 제한합니다.