ComponentsP3 본문

PieChart

부분-전체(비례)를 슬라이스로 — 자체 SVG(zero-dep), 파이/도넛 2변형, 도넛 중앙 합계, 색맹 안전 토큰, 범주×값×% sr-only 표.

마지막 업데이트 2026-06-21

한눈에#

파이/도넛 차트는 부분-전체(part-to-whole) 관계를 슬라이스 각도로 보여줍니다. 전체에서 각 범주가 차지하는 비율이 한눈에 들어오죠. 도넛은 중앙 구멍에 합계나 핵심 수치를 둘 수 있습니다.

트래픽 소스 구성
범주비율
직접 방문4,20042%
검색3,10031%
소셜1,80018%
추천9009%
  • 파이 · 도넛 2변형
  • 도넛 중앙 합계/라벨
  • 색맹 안전 차트 토큰
  • 범주×값×% sr-only 표

도넛 중앙에 합계를 두면 비율과 절대값을 함께 읽힙니다

파이 vs 도넛#

같은 데이터를 형태만 바꿉니다. 도넛은 중앙 여백으로 합계·아이콘을 둘 수 있어 대시보드에서 선호되고, 파이는 가장 단순한 비례 표현입니다.

파이 vs 도넛 — 같은 데이터, 다른 형태

언제 쓰나 — 그리고 주의#

비례 차트는 범주가 적고(보통 ≤6) 비율 자체가 메시지일 때 효과적입니다. 각도 비교는 길이 비교(막대)보다 부정확하므로, 범주가 많거나 정밀 비교가 필요하면 BarChart를 쓰세요. WDS PieChart는 이 한계를 보완하려 범례·표에 % 수치를 항상 병기합니다(각도에만 의존하지 않음).

음수·0 값은 part-to-whole에 의미가 없어 기여 0(0폭 슬라이스)으로 처리하고, 합계가 0이면 옅은 빈 링만 그립니다.

아키텍처 — 각도는 공유, 호는 네이티브#

슬라이스 각도 계산(computePieSlices)은 웹·Flutter가 공유하는 순수 코어(fixture 패리티로 핀)입니다. 하지만 호(arc) 렌더는 SVG(웹)와 Canvas(Flutter)가 각각 네이티브로 그립니다 — Flutter의 SVG path 파서가 호 A 명령을 지원하지 않기 때문입니다. 같은 각도를 받아 그리므로 두 플랫폼 슬라이스가 정렬됩니다.

접근성#

  • 파이는 각도 비교가 어려워(SC 1.4.1 관련) 범주×값×비율 표가 정본입니다 — sr-only <table>로 노출하고 SVG는 aria-hidden.
  • 색에만 의존하지 않습니다 — 범례·표가 범주명을 텍스트로 담습니다(채널 분리).
  • label은 필수 prop입니다(차트는 데이터).

토큰#

역할토큰
슬라이스 색(순환)--wds-chart-1--wds-chart-8
슬라이스 구분선--wds-color-surface
빈 링--wds-color-border
도넛 내경 비율0.62 (외경 대비)