Skip to content
Status
Active
Level
Intermediate
Updated
2026. 06. 18.
Tags
Chart.jsgauge게이지doughnut 응용

gauge — 도넛 응용 반원 게이지 ​

타입 시리즈. L1(보편 원리)·L2(Vue 통합)·L3(환경 사정)을 전제로 한다. gauge는 Chart.js의 기본 제공 타입이 아니라 doughnut의 응용이다(doughnut 문서 4.1이 토대다).

1. 개요 ​

gauge는 0부터 최대까지의 범위에서 단일 수치를 반원 호로 표현한다. 사용률·점수·진행도처럼 "전체 중 현재 값"을 한눈에 보여줄 때 쓴다. 앞서 강조했듯 Chart.js에는 gauge 타입이 없다. doughnut을 반원으로 변형하고 데이터를 값/나머지 두 조각으로 구성해 게이지처럼 보이게 만든다.

2. 기본 골격 ​

js
new Chart(ctx, {
  type: 'doughnut',
  data: {
    datasets: [{
      data: [70, 30],                       // [값, 최대-값]
      backgroundColor: ['#da7756', '#e2dcd2'] // [값 색, 트랙 색]
    }]
  },
  options: {
    circumference: 180,  // 반원
    rotation: 270,       // 아래가 평평하게
    cutout: '75%',       // 링 두께
    plugins: { legend: { display: false }, tooltip: { enabled: false } }
  }
});

gauge 의 구조 — 값/트랙 조각과 circumference·rotation·cutout

3. 데이터 구조 ​

게이지는 doughnut의 비율 구조를 두 조각으로 고정해 사용한다.

  • data: [값, 최대-값] — 첫 조각이 현재 값, 둘째 조각이 남은 트랙(track)이다. 합이 항상 최대값이 되도록 둘째를 최대-값으로 둔다.
  • backgroundColor: [값 색, 트랙 색] — 값 조각은 강조색, 트랙 조각은 흐린 배경색을 준다.

값이 100점 만점에 70이면 data: [70, 30]이 된다. 갱신할 때 두 조각을 함께 다시 계산한다.

4. 핵심 옵션 ​

게이지의 형태는 doughnut 형태 옵션의 특정 조합으로 결정된다(doughnut 4.1).

속성게이지에서의 값역할
circumference180전체를 반원으로
rotation270시작각을 돌려 아래를 평평하게
cutout'70%'~'80%'링 두께(클수록 얇음)
plugins.legenddisplay: false게이지엔 범례 불필요
plugins.tooltipenabled: false트랙 조각의 툴팁 노출 방지

5. How-to ​

반원 만들기. 전체 각도를 절반으로, 시작각을 돌린다.

js
options: { circumference: 180, rotation: 270 }

값 갱신. 두 조각을 함께 갱신하고 update()를 호출한다(L1 4장).

js
chart.data.datasets[0].data = [value, max - value];
chart.update();

임계에 따른 값 색. 값에 따라 값 조각의 색을 바꾼다. L3의 resolveColor·USAGE_LEVEL을 그대로 적용한다 — 값 조각 색을 임계로 결정하고, 테마 변경은 watch로 잇는다.

js
backgroundColor: (ctx) =>
  ctx.dataIndex === 0 ? colorByLevel(value) : TRACK_COLOR

가운데 값 텍스트. 도넛 중앙에 수치를 표시하는 옵션은 없다. 커스텀 플러그인의 afterDraw에서 캔버스에 직접 그린다(L1의 ctx.fillText).

js
const centerText = {
  id: 'centerText',
  afterDraw(chart) {
    const { ctx, chartArea } = chart;
    // chartArea 중심에 ctx.fillText 로 값 그리기
  }
};

트랙 숨기기. 트랙 조각 색을 배경색과 같게 두면 값 조각만 떠 보인다.

눈금·바늘 게이지. 눈금 라벨이나 바늘(needle)이 필요한 본격 게이지는 도넛 변형만으로는 한계가 있다. 이 경우 게이지 전용 플러그인(예: chartjs-gauge 계열)이나 커스텀 플러그인을 검토한다.

6. 주의 ​

  • 기본 타입이 아니다. 코드만 보면 type: 'doughnut'이므로, 게이지 의도를 주석이나 컴포넌트 이름으로 명시해야 유지보수 시 혼동이 없다.
  • 트랙 조각은 필수. 둘째 조각(최대-값)을 빼면 값이 반원 전체를 채워 비율이 보이지 않는다.
  • Gauge는 반원이라 기본적으로 종횡비는 2 : 1 이다. 반응형 CSS를 작업할 때 aspect-ratio: 2 / 1로 두거나, cqi 기준을 width에 맞춘다.
  • 가운데 텍스트는 플러그인 의존. 도넛 옵션에는 중앙 텍스트가 없다.
  • 복잡한 게이지는 전용 도구. 눈금·바늘·구간 색 등이 필요하면 도넛 변형을 고집하기보다 전용 플러그인이 효율적이다.