Skip to content

히스토그램 ​

히스토그램은 원시 값을 구간(bin)으로 나누고 구간마다 빈틈 없는 막대를 하나씩 그립니다. 엔진이 O(n)으로 구간을 나누므로 1,000,000개 이상의 값도 문제없습니다. 변수 하나의 분포를 보여 줄 때 씁니다.

라이브 예제

기본 사용법 ​

ts
import { Charturbo } from 'charturbo';

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

const values = new Float32Array(500_000).map(() => Math.random() * 100);
const bins = sdk.renderHistogram(values, { bins: 'auto', title: '응답 시간(ms)' });
console.log(`구간 ${bins.binCount}개 (${bins.rule})`);
sdk.enableNodeInteractions(canvas, { autoRender: true });
sdk.render();
ts
renderHistogram(
  values: Float32Array | number[],
  options?: HistogramChartOptions
): HistogramResult

데이터 포인트 id는 구간 인덱스입니다.

데이터 형식 ​

values는 원시 샘플의 평평한 Float32Array(권장) 또는 number[]입니다. 유한하지 않은 값과 range 밖의 값은 무시합니다.

메서드는 엔진이 계산한 구간을 반환합니다.

필드타입설명
binCountnumber구간 수.
edgesFloat64Array오름차순 구간 경계 binCount + 1개.
countsFloat64Array구간별 샘플 수.
heightsFloat64Array막대 높이: 개수, 또는 density: true이면 밀도.
totalnumber범위 안의 유한한 값 개수.
rule'freedman-diaconis' | 'sturges' | 'fixed'사용한 구간 규칙.

옵션 ​

HistogramChartOptions:

옵션타입기본값설명
bins'auto' | number'auto''auto': Freedman–Diaconis, IQR이 0이면 Sturges(최대 1000구간). 숫자를 주면 같은 너비 구간을 씁니다(최대 10000).
range[number, number]유한한 데이터 범위구간을 나눌 범위. 밖의 값은 무시합니다.
densitybooleanfalse막대 높이를 전체 넓이가 1인 밀도로 표시합니다.
colorColorInput테마 palette[0]막대 색.
barGapnumber1막대 사이 간격(CSS px).
cornerRadiusnumber0막대 윗부분 둥글기(CSS px).
titlestring—차트 제목.
descriptionstring—캔버스의 접근성 이름.
localestringSDK 로케일기본 라벨의 로케일.
axes{ x?: ChartAxisOptions; y?: ChartAxisOptions }—x 눈금은 구간 경계에 놓이고 경계 값을 받습니다.
paddingChartPaddingOptions자동플롯 여백(CSS px).
hoverChartHoverStyle—hover 스타일.
gridChartGridStyle—그리드 스타일.
widthnumber164플롯의 월드 너비.
maxBarHeightnumber78가장 높은 막대의 월드 높이.

hover ​

툴팁 라벨은 구간 범위 a – b이고, 개수(density: true이면 밀도와 개수)를 함께 보여 줍니다.

데이터 갱신 ​

새 값으로 renderHistogram을 다시 호출합니다. 구간 나누기가 O(n)이므로 큰 배열을 다시 나눠도 비용이 작습니다.

참고 사항 ​

  • 히스토그램은 항상 세로이고 2D입니다. 줌과 팬이 없고 animation 옵션도 없습니다.
  • 사분위수가 있는 그룹별 분포는 박스 플롯 · 바이올린을 쓰세요.

프레임워크 ​

tsx
<CharturboChart type="histogram" data={values} options={{ bins: 40 }} />

함께 보기 ​

MIT License