복합 차트 · 차트별 기능

매출 막대와 이익률 선처럼 단위가 다른 계층을 왼쪽 기본축과 오른쪽 보조축으로 비교합니다. 이 차트에서 사용할 수 있는 다양한 표현과 기능을 예제로 살펴보세요.

복합 차트

차트 고유 기능

이 차트만의 고유한 실행 기능

Graflume 공개 카탈로그에 등록된 이 계열의 모든 실행 모드입니다. 각 탭은 독립 데이터, 옵션, Quick API와 지원 기능 근거를 가집니다.

Combo chart

Combo chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: flat portable layers · independent x/x2/y/y2 domains.

불러오는 중

조작 도움말

확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.

Tab으로 조작부를 이동하고 Enter 또는 Space로 실행하세요. 차트에 초점이 있을 때 더하기·빼기 키로 확대·축소하고 화살표 키로 이동할 수 있습니다.

자동 배치는 둘레 후보를 비교해 차트·범례·다른 말풍선과의 겹침을 가능한 한 피합니다. 명시한 위치는 필요한 안전 보정만 적용해 유지합니다. 말풍선 글자는 상자 안에서 안전하게 자동 줄바꿈됩니다. 끊어지지 않는 긴 토큰은 정해진 줄 수 안에서 시각적으로 축약하지만, 보조 기술에는 원문 전체를 유지합니다.

불러오는 중

코드와 설정 보기

브라우저 API

Graflume.combo()

const data = [
  {
    "base": 37.44,
    "category": "Jan",
    "close": 48,
    "conversion": 18,
    "date": "2026-01-01",
    "direction": 28,
    "down": 78,
    "high": 54,
    "low": 44,
    "lower": 43,
    "magnitude": 7,
    "minus": 39,
    "open": 44,
    "plus": 24,
    "previous": 44,
    "price": 72,
    "radius": 20.560000000000002,
    "resistance": 57,
    "secondary": 36,
    "series": "Before launch",
    "signal": 48.2,
    "speed": 18,
    "support": 40,
    "target": 50,
    "title": "",
    "up": 54,
    "upper": 55,
    "value": 48,
    "volume": 1250,
    "width": 2.8,
    "z": 8
  },
  {
    "base": 41.34,
    "category": "Feb",
    "close": 53,
    "conversion": 20.28,
    "date": "2026-02-01",
    "direction": 59,
    "down": 76.3,
    "high": 60,
    "low": 48,
    "lower": 47,
    "magnitude": 9.4,
    "minus": 37.9,
    "open": 48,
    "plus": 25.6,
    "previous": 48,
    "price": 75.41,
    "radius": 21.66,
    "resistance": 62,
    "secondary": 41.97,
    "series": "Before launch",
    "signal": 53.16,
    "speed": 20.7,
    "support": 45,
    "target": 54.6,
    "title": "",
    "up": 56.4,
    "upper": 61,
    "value": 53,
    "volume": 1478,
    "width": 3.6999999999999997,
    "z": 9.4
  },
  {
    "base": 39.78,
    "category": "Mar",
    "close": 51,
    "conversion": 22.16,
    "date": "2026-03-01",
    "direction": 90,
    "down": 74.6,
    "high": 59,
    "low": 45,
    "lower": 44,
    "magnitude": 11.8,
    "minus": 36.8,
    "open": 53,
    "plus": 27.2,
    "previous": 53,
    "price": 77.85,
    "radius": 21.22,
    "resistance": 60,
    "secondary": 46.2,
    "series": "Before launch",
    "signal": 51.82,
    "speed": 23.4,
    "support": 43,
    "target": 59.2,
    "title": "Spring release",
    "up": 58.8,
    "upper": 60,
    "value": 51,
    "volume": 1706,
    "width": 4.6,
    "z": 10.8
  },
  {
    "base": 46.02,
    "category": "Apr",
    "close": 59,
    "conversion": 23.4,
    "date": "2026-04-01",
    "direction": 121,
    "down": 72.9,
    "high": 65,
    "low": 55,
    "lower": 54,
    "magnitude": 14.2,
    "minus": 35.7,
    "open": 51,
    "plus": 28.8,
    "previous": 51,
    "price": 78.81,
    "radius": 22.98,
    "resistance": 68,
    "secondary": 48,
    "series": "Before launch",
    "signal": 59.48,
    "speed": 26.1,
    "support": 51,
    "target": 63.8,
    "title": "",
    "up": 61.2,
    "upper": 66,
    "value": 59,
    "volume": 1724,
    "width": 5.5,
    "z": 12.2
  },
  {
    "base": 51.48,
    "category": "May",
    "close": 66,
    "conversion": 23.95,
    "date": "2026-05-01",
    "direction": 152,
    "down": 71.2,
    "high": 73,
    "low": 61,
    "lower": 60,
    "magnitude": 16.6,
    "minus": 34.6,
    "open": 59,
    "plus": 30.4,
    "previous": 59,
    "price": 78.47,
    "radius": 24.52,
    "resistance": 75,
    "secondary": 48.17,
    "series": "Before launch",
    "signal": 66.24,
    "speed": 28.8,
    "support": 58,
    "target": 68.4,
    "title": "",
    "up": 63.6,
    "upper": 74,
    "value": 66,
    "volume": 1952,
    "width": 2.8,
    "z": 13.6
  },
  {
    "base": 54.6,
    "category": "Jun",
    "close": 70,
    "conversion": 24.03,
    "date": "2026-06-01",
    "direction": 183,
    "down": 69.5,
    "high": 78,
    "low": 64,
    "lower": 63,
    "magnitude": 7,
    "minus": 33.5,
    "open": 66,
    "plus": 32,
    "previous": 66,
    "price": 77.63,
    "radius": 25.4,
    "resistance": 79,
    "secondary": 48.47,
    "series": "Before launch",
    "signal": 70.3,
    "speed": 31.5,
    "support": 62,
    "target": 73,
    "title": "",
    "up": 66,
    "upper": 79,
    "value": 70,
    "volume": 2180,
    "width": 3.6999999999999997,
    "z": 15
  },
  {
    "base": 59.28,
    "category": "Jul",
    "close": 76,
    "conversion": 24.01,
    "date": "2026-07-01",
    "direction": 214,
    "down": 67.8,
    "high": 82,
    "low": 72,
    "lower": 71,
    "magnitude": 9.4,
    "minus": 32.4,
    "open": 70,
    "plus": 33.6,
    "previous": 70,
    "price": 77.31,
    "radius": 26.72,
    "resistance": 85,
    "secondary": 50.62,
    "series": "After launch",
    "signal": 76.16,
    "speed": 34.2,
    "support": 68,
    "target": 77.6,
    "title": "",
    "up": 68.4,
    "upper": 83,
    "value": 76,
    "volume": 2198,
    "width": 4.6,
    "z": 16.4
  },
  {
    "base": 63.96,
    "category": "Aug",
    "close": 82,
    "conversion": 24.31,
    "date": "2026-08-01",
    "direction": 245,
    "down": 66.1,
    "high": 89,
    "low": 77,
    "lower": 76,
    "magnitude": 11.8,
    "minus": 31.299999999999997,
    "open": 76,
    "plus": 35.2,
    "previous": 76,
    "price": 78.31,
    "radius": 28.04,
    "resistance": 91,
    "secondary": 55.17,
    "series": "After launch",
    "signal": 82.02,
    "speed": 36.900000000000006,
    "support": 74,
    "target": 82.2,
    "title": "",
    "up": 70.8,
    "upper": 90,
    "value": 82,
    "volume": 2426,
    "width": 5.5,
    "z": 17.799999999999997
  },
  {
    "base": 62.4,
    "category": "Sep",
    "close": 80,
    "conversion": 25.21,
    "date": "2026-09-01",
    "direction": 276,
    "down": 64.4,
    "high": 88,
    "low": 74,
    "lower": 73,
    "magnitude": 14.2,
    "minus": 30.2,
    "open": 82,
    "plus": 36.8,
    "previous": 82,
    "price": 80.78,
    "radius": 27.6,
    "resistance": 89,
    "secondary": 61.27,
    "series": "After launch",
    "signal": 80.68,
    "speed": 39.6,
    "support": 72,
    "target": 86.8,
    "title": "Team plan launch",
    "up": 73.2,
    "upper": 89,
    "value": 80,
    "volume": 2444,
    "width": 2.8,
    "z": 19.2
  },
  {
    "base": 69.42,
    "category": "Oct",
    "close": 89,
    "conversion": 26.8,
    "date": "2026-10-01",
    "direction": 307,
    "down": 62.7,
    "high": 95,
    "low": 85,
    "lower": 84,
    "magnitude": 16.6,
    "minus": 29.1,
    "open": 80,
    "plus": 38.4,
    "previous": 80,
    "price": 84.2,
    "radius": 29.580000000000002,
    "resistance": 98,
    "secondary": 67.07,
    "series": "After launch",
    "signal": 89.24,
    "speed": 42.3,
    "support": 81,
    "target": 91.4,
    "title": "",
    "up": 75.6,
    "upper": 96,
    "value": 89,
    "volume": 2672,
    "width": 3.6999999999999997,
    "z": 20.6
  },
  {
    "base": 74.88,
    "category": "Nov",
    "close": 96,
    "conversion": 28.94,
    "date": "2026-11-01",
    "direction": 338,
    "down": 61,
    "high": 103,
    "low": 91,
    "lower": 90,
    "magnitude": 7,
    "minus": 28,
    "open": 89,
    "plus": 40,
    "previous": 89,
    "price": 87.6,
    "radius": 31.12,
    "resistance": 105,
    "secondary": 70.96,
    "series": "After launch",
    "signal": 96,
    "speed": 45,
    "support": 88,
    "target": 96,
    "title": "",
    "up": 78,
    "upper": 104,
    "value": 96,
    "volume": 2900,
    "width": 4.6,
    "z": 22
  },
  {
    "base": 81.12,
    "category": "Dec",
    "close": 104,
    "conversion": 31.27,
    "date": "2026-12-01",
    "direction": 9,
    "down": 59.3,
    "high": 112,
    "low": 98,
    "lower": 97,
    "magnitude": 9.4,
    "minus": 26.9,
    "open": 96,
    "plus": 41.6,
    "previous": 96,
    "price": 90.01,
    "radius": 32.879999999999995,
    "resistance": 113,
    "secondary": 72.44,
    "series": "After launch",
    "signal": 103.66,
    "speed": 47.7,
    "support": 96,
    "target": 100.6,
    "title": "",
    "up": 80.4,
    "upper": 113,
    "value": 104,
    "volume": 2918,
    "width": 5.5,
    "z": 23.4
  }
];

const options = {
  "accessibility": {
    "description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
    "label": "복합 차트 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": "복합 차트",
      "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": "복합 차트"
  },
  "width": "container"
};

Graflume.combo('#chart', data, options);

이식 가능한 스키마

ChartSpec 0.1 · options

{
  "accessibility": {
    "description": "확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.",
    "label": "복합 차트 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": "복합 차트",
      "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": "복합 차트"
  },
  "width": "container"
}
Quick API
combo()
브라우저 스냅샷
graflume
mark
multiple
프리셋
2
  • combo
  • flat portable layers
  • independent x/x2/y/y2 domains
  • compatible shared primary x/y domains and independent child axes/legends
  • Pareto preset
  • shared multi-view axes/legends/colorbars
  • layer transforms

차트 카탈로그

실행 모드와 호환 이름

실행 가능한 모드와 이전 이름의 대응 관계를 확인하세요.

모드: 2 · 호환 이름: 1

복합 차트 · 지원 모드 · 대표 모드 combo
ID이름Quick APImodemark렌더러
combo복합 차트 · combocombo()defaultmultiplecanvas
pareto복합 차트 · paretopareto()paretoparetocanvas
복합 차트 · 호환 이름
식별자기준 모드 ID
paretopareto

매뉴얼

통합 체크리스트

ARIA · table fallback

접근성

Canvas ARIA 메타데이터에 텍스트 요약과 표 대체 표현을 함께 제공합니다.

standard · large · ultra

성능

standard·large·ultra 프로필은 렌더링 작업량을 제한합니다.