Skip to content

레이더 ​

renderRadarChart는 레이더(스파이더) 차트를 그립니다. 3개 이상의 축 위에 시리즈마다 닫힌 다각형 하나를 그립니다. 몇 개 항목을 같은 속성 집합으로 비교할 때 씁니다.

라이브 예제

기본 사용법 ​

ts
import { Charturbo } from 'charturbo';

const canvas = document.querySelector('canvas')!;
const sdk = await Charturbo.create(canvas);

sdk.renderRadarChart(
  {
    axes: ['속도', '주행거리', '비용', '승차감', '안전'],
    series: [
      { name: '모델 A', values: [82, 64, null, 71, 90] }, // null = 결측
      { name: '모델 B', values: [55, 88, 70, 62, 74], color: '#d95926' },
    ],
  },
  { title: '차량 비교', max: 100, rings: 4, format: '.0f' }
);
sdk.enableNodeInteractions(canvas, { autoRender: true });
sdk.render();

시그니처:

ts
renderRadarChart(data: RadarChartData, options?: RadarChartOptions): { axisCount: number; seriesCount: number }

데이터 형식 ​

ts
interface RadarChartData {
  axes: string[];          // 축 이름, startAngle부터 시계 방향; 3개 이상
  series: RadarSeries[];   // 시리즈 1~8개
}

interface RadarSeries {
  name: string;
  values: ArrayLike<number | null>;  // 축마다 하나; 유한하고 0 이상, null / NaN = 결측
  color?: ColorInput;                // 기본: 시리즈의 테마 팔레트 슬롯
}
  • 각 시리즈는 축마다 정확히 값 하나를 가져야 하고, 시리즈는 1~8개여야 합니다. 아니면 RangeError를 던집니다.
  • 음수나 무한대 값은 예외를 던집니다. 결측 값(null / NaN)이 있는 축에서는 다각형이 중심을 지나고 마커를 그리지 않습니다.
  • 시리즈 색은 테마 팔레트를 고정 순서로 씁니다(순환하지 않음).

옵션 ​

옵션타입기본값설명
maxnumber | (number | null | undefined)[]데이터의 nice 최댓값모든 축이 공유하는 반지름 최댓값, 또는 축별 최댓값(null = 공유 최댓값). 링 라벨은 공유 눈금일 때만 표시합니다.
ringsnumber4목표 링 개수(nice 간격).
fillOpacitynumber0.2다각형 채우기 불투명도. 0 = 외곽선만.
strokeWidthnumber2다각형 선 두께(CSS px).
markersboolean | numbertrue(반지름 3.5px)꼭짓점 마커: true, false, 또는 반지름(CSS px).
startAnglenumber0첫 축의 각도(12시 방향에서 시계 방향, 도).
grid'polygon' | 'circle''polygon'동심 그리드 모양.
showGridbooleantrue링과 스포크 표시.
formatChartValueFormat로케일 숫자링, 툴팁, 접근성의 값 형식(형식 문자열, Intl 옵션, 함수). 숫자·날짜 형식 참고.
valueLabelstring'값' (로캘별)툴팁과 데이터 표에서 값의 이름.
titlestring차트 제목.
descriptionstring캔버스의 접근성 이름.
legendChartLegendOptions | boolean시리즈 2개 이상이면 표시{ show, toggle, emphasize }. 클릭하면 시리즈를 토글하고, hover하면 강조합니다.
paddingChartPaddingOptions자동플롯 여백(CSS px).

상호작용 ​

enableNodeInteractions(canvas)를 호출하면 켜집니다.

  • hover하면 포인터 각도에 가장 가까운 축을 고르고, 그 축의 보이는 시리즈를 모두 반환합니다. 가장 가까운 꼭짓점이 primary 항목입니다. 해당 스포크가 강조되고 마커가 커집니다.
  • 범례를 클릭하면 시리즈가 숨겨지고, 범례 hover는 나머지를 흐리게 하고 강조한 시리즈를 맨 위에 그립니다.
  • 브러시, 줌, 팬은 비활성입니다.
  • 데이터 포인트 id는 series * axes + axis입니다.

툴팁 컨텍스트(툴팁과 hover 참고):

ts
// ctx.chartType === 'radar'
// ctx.index = 축 인덱스
// ctx.items = 그 축의 보이는 모든 시리즈
// ctx.radar = { axis, max }

참고 사항 ​

  • nice 반지름 눈금, 축별 최댓값, 다각형 · 그리드 · 마커 형상, hit 테스트, 라벨 앵커는 엔진(Rust)에서 계산합니다. 선과 마커는 GPU에서 CSS px 크기로 그립니다.
  • 축별 최댓값을 쓰면 링 값 라벨은 생략합니다.
  • 접근성: 요약(시리즈별 최고 축), 데이터 표(축 × 시리즈), 좌우 화살표 = 축 이동, 상하 화살표 = 시리즈 이동. 접근성 참고.

함께 보기 ​

MIT License