Skip to content

퍼널 ​

renderFunnelChart는 값에 따라 폭이 정해지는 순서 있는 단계를 그리고, 단계 사이의 전환율을 함께 보여 줍니다. 방문 → 가입 → 유료 전환처럼 단계별 이탈을 볼 때 씁니다.

라이브 예제

기본 사용법 ​

ts
import { Charturbo } from 'charturbo';

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

sdk.renderFunnelChart(
  { labels: ['방문', '가입', '체험', '유료'], values: [12000, 5400, 2100, 760] },
  { title: '전환 퍼널', conversion: 'both', format: ',.0f' }
);
sdk.enableNodeInteractions(canvas, { autoRender: true });
sdk.render();

시그니처:

ts
renderFunnelChart(data: FunnelChartData, options?: FunnelChartOptions): { stageCount: number }

데이터 형식 ​

ts
interface FunnelChartData {
  labels: string[];                  // 단계 이름, 첫 단계부터
  values: Float64Array | number[];   // 유한하고 0 이상
}

값은 유한하고 >= 0이어야 합니다. 그 밖의 값은 예외를 던집니다. 단계 폭은 가장 큰 값을 기준으로 정합니다.

옵션 ​

옵션타입기본값설명
orientation'vertical' | 'horizontal''vertical'세로: 첫 단계가 위, 라벨은 오른쪽. 가로: 라벨은 단계 아래.
shape'trapezoid' | 'bar''trapezoid'사다리꼴은 다음 단계 폭으로 좁아지고(마지막은 직사각형), 'bar'는 가운데 정렬 막대를 그립니다.
colorColorInput팔레트 첫 색모든 단계에 쓰는 색 하나(시리즈 하나, 색 하나).
colors(ColorInput | null | undefined)[]단계별 색(예: 서수 램프). 비어 있는 항목은 color를 씁니다.
minWidthnumber0.02가장 넓은 단계 대비 가장 좁은 단계의 비율.
conversion'first' | 'previous' | 'both' | 'none''first'단계 라벨에 표시할 전환율. 툴팁은 항상 둘 다 보여 줍니다.
labelsbooleantrue단계 라벨.
formatChartValueFormat로케일 숫자라벨, 툴팁, 접근성의 값 형식(형식 문자열, Intl 옵션, 함수). 숫자·날짜 형식 참고.
valueLabelstring'값' (로캘별)툴팁과 데이터 표에서 값의 이름.
titlestring차트 제목.
descriptionstring캔버스의 접근성 이름.
paddingChartPaddingOptions자동플롯 여백(CSS px). 라벨 자리는 자동으로 확보합니다.

퍼널에는 범례가 없습니다.

전환율 ​

엔진은 단계마다 두 가지 비율을 계산합니다.

  • 첫 단계 대비(of first): 첫 단계 값에 대한 이 단계 값의 백분율.
  • 이전 단계 대비(of previous): 이전 단계 값에 대한 이 단계 값의 백분율.

0으로 나눈 비율은 NaN(정의되지 않음)입니다. conversion으로 라벨에 표시할 비율을 고릅니다.

상호작용 ​

enableNodeInteractions(canvas)를 호출하면 켜집니다. hover한 단계는 밝아지고, 툴팁은 값과 두 비율을 보여 줍니다. 브러시, 줌, 팬은 비활성입니다. 데이터 포인트 id는 단계 인덱스입니다.

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

ts
// ctx.chartType === 'funnel'
// ctx.index = 단계 인덱스
// ctx.funnel = { stage, value, ofFirst, ofPrevious }  // NaN = 정의되지 않음

참고 사항 ​

  • 값 검증, 단계 폭, 전환율, 테셀레이션(2px 간격, 안티앨리어싱된 가장자리), hit 테스트, 라벨 앵커는 엔진(Rust)에서 계산합니다.
  • 접근성: 요약(첫 단계 → 마지막 단계, 최종 전환율), 데이터 표(단계, 값, % of first, % of previous), 좌우 화살표로 단계 이동. 접근성 참고.

함께 보기 ​

MIT License