BarChart
카테고리별 절대량을 막대로 — 둥근 막대, 0 베이스라인 강제, 그룹·누적(stacked)·가로(horizontal) 지원.
마지막 업데이트 2026-06-18
한눈에#
카테고리(달·지역·제품 등)별 절대량 비교에 적합합니다. 막대는 상단만 둥글고(squircle 정합), 면적이 거짓말하지 않도록 0 베이스라인을 강제합니다. 시리즈 색은 색맹 안전 차트 토큰을 자동으로 씁니다.
| 항목 | 1분기 | 2분기 | 3분기 | 4분기 |
|---|---|---|---|---|
| 매출 | 320 | 480 | 410 | 590 |
- 카테고리 x축
- 0 베이스라인 강제
- 상단만 둥근 막대
- 그룹 막대 지원
막대에 마우스를 올리면 그 달의 값이 툴팁으로 뜹니다
그룹 막대 — 다중 시리즈#
여러 시리즈는 카테고리 밴드 안에서 나란히(그룹) 놓입니다. 범례 텍스트로 시리즈를 구분합니다. legendToggle을 켜면 범례 항목을 클릭해 해당 시리즈를 숨기거나 되돌릴 수 있습니다 — 숨기면 범례가 디밍되고 남은 시리즈로 그룹이 재배치됩니다.
| 항목 | 1Q | 2Q | 3Q | 4Q |
|---|---|---|---|---|
| 하드웨어 | 320 | 410 | 380 | 520 |
| 소프트웨어 | 180 | 260 | 340 | 420 |
누적 막대 — 합계와 구성비#
stacked를 켜면 시리즈를 카테고리마다 위로 쌓아 전체 합계와 각 구성비를 한눈에 보입니다(그룹은 개별 비교에, 누적은 합계 추이에 적합). 같은 데이터, 다른 렌더입니다. 누적은 전폭 막대로 쌓이고 최상단 세그먼트만 둥근 상단입니다.
| 항목 | 1Q | 2Q | 3Q | 4Q |
|---|---|---|---|---|
| 검색 | 320 | 410 | 380 | 520 |
| 소셜 | 180 | 260 | 340 | 300 |
| 직접 | 120 | 150 | 200 | 260 |
| 항목 | 1Q | 2Q | 3Q | 4Q |
|---|---|---|---|---|
| 검색 | 320 | 410 | 380 | 520 |
| 소셜 | 180 | 260 | 340 | 300 |
| 직접 | 120 | 150 | 200 | 260 |
가로 막대 — 순위·긴 라벨#
horizontal을 켜면 카테고리가 세로축, 값이 가로축으로 전치됩니다. 카테고리 라벨이 길거나(부서·국가명) 순위 비교가 핵심일 때 읽기 쉽습니다. 막대는 좌(원점)에서 우로 자라고 오른쪽 끝만 둥글며, 그룹·누적도 그대로 동작합니다.
| 항목 | 서울 | 경기 | 부산 | 대구 | 광주 |
|---|---|---|---|---|---|
| 매출 | 920 | 740 | 480 | 360 | 250 |
| 항목 | 서울 | 경기 | 부산 |
|---|---|---|---|
| 검색 | 420 | 360 | 240 |
| 소셜 | 300 | 240 | 160 |
| 직접 | 200 | 140 | 80 |
음수 값#
값이 음수면 0축이 플롯 중앙으로 오고, 막대는 0축 아래로 자랍니다(--wds-color-border-strong로 0축 강조).
| 항목 | 1월 | 2월 | 3월 | 4월 | 5월 |
|---|---|---|---|---|---|
| 증감 | 40 | -25 | 60 | -15 | 30 |
긴 라벨 — x축 회전 + 수직 그리드#
카테고리 라벨이 길어 겹치면 xLabelRotate(도, 음수=반시계)로 비스듬히 눕힙니다. 회전 각·최장 라벨 길이로 하단 여백이 자동 확장돼 라벨이 잘리지 않습니다(회전 0은 기본 여백 그대로). showVerticalGrid는 카테고리 위치에 수직 보조선을 더합니다(기본 off, 수평 그리드와 동일 토큰).
| 항목 | 서울특별시 | 부산광역시 | 인천광역시 | 대전광역시 | 광주광역시 |
|---|---|---|---|---|---|
| 매출 | 320 | 280 | 210 | 180 | 160 |
콤보 — 막대 + 선 (L3 자유 슬롯)#
"라이브러리의 제한된 수정"을 넘는 자유 커스터마이징의 대표 사례입니다. 매출은 막대로, 전월 대비 성장률은 그 위에 선으로 — 두 지표의 스케일이 다릅니다. WDS는 네이티브 이중 Y축을 강요하지 않는 대신, L3 자유 슬롯(svgOverlay)에 플롯 좌표계를 넘겨 작성자가 2차 스케일을 직접 소유하고 데이터에 앵커해 그리도록 합니다. 오버레이는 aria-hidden이라 성장률 데이터는 sr-only 표로 병렬 노출합니다.
선은 매출과 다른 스케일의 성장률(%)을 L3 슬롯(svgOverlay)으로 직접 그린 오버레이입니다 — 네이티브 이중 Y축이 아니라 작성자가 2차 스케일을 소유합니다.
| 항목 | 1월 | 2월 | 3월 | 4월 | 5월 | 6월 |
|---|---|---|---|---|---|---|
| 월 매출 | 320백만 | 410백만 | 380백만 | 520백만 | 610백만 | 560백만 |
| 월 | 성장률 |
|---|---|
| 1월 | +8% |
| 2월 | +28% |
| 3월 | -7% |
| 4월 | +37% |
| 5월 | +17% |
| 6월 | -8% |
접근성#
- LineChart와 동일하게
<figure>+ 보이는 캡션 + SVG는aria-hidden+ sr-only 데이터 표(정본)입니다. - 막대는 위치·축 라벨로 이미 구분되며, 다중 시리즈는 범례 텍스트로 식별합니다.
- 호버 툴팁은 WDS
Tooltip도그푸딩, reduced-motion에서 진입 애니메이션 정지.
데이터 API#
import { BarChart } from '@wds/ui-web';
<BarChart
label="분기별 매출"
series={[
{ name: '매출', data: [{ label: '1분기', value: 320 }, { label: '2분기', value: 480 }] },
]}
barPadding={0.4} // 0–1, 막대 사이 간격 비율(기본 0.4)
stacked={false} // true면 시리즈를 쌓아 합계 표시(기본 그룹/나란히)
horizontal={false} // true면 카테고리=세로·값=가로로 전치(순위·긴 라벨)
/>