Skip to content

API Biểu đồ tròn / Vành khuyên

Các lát được chia theo tỷ phần trong tổng thể, với chế độ vành khuyên chỉ cách một prop (innerRadiusRatio) - xem bản demo Biểu đồ tròn / Vành khuyên.

Import

ts
import "@michi-vz/wc/pie-chart";
// <michi-vz-pie-chart> is now defined
ts
import { mountPieChart } from "@michi-vz/core";

const chart = mountPieChart(el, props);

Props

PropTypeDefaultDescription
timelineboolean | TimelinePeriodConfig-Opt-in "play through years": snapshots one period at a time over the distinct per-row `date` values, with a headless controller (`chart.timeline()`) plus an optional built-in play button + scrubber. Off by default; requires rows with `date`. Values tween between periods unless `interpolate: false`.
dataSet*PieDataItem[]-Array of slices; each value becomes a wedge sized by its share of the total
titlestring-Optional chart title rendered above the plot
innerRadiusRationumber00 = full pie (default); (0,1) = donut hole as a fraction of the outer radius.
padAnglenumber0Gap between slices in radians (default 0).
cornerRadiusnumber0Corner radius on the arcs in px (default 0).
sortByValuebooleantrueSort slices by value descending (default true); false keeps data order.
showLabelsbooleantrueDraw the % label inside each slice when it is large enough (default true).
showLegendbooleanfalseRender a swatch+label legend below the chart (default false).
filter{ limit: number; sortingDir: "asc" | "desc" }-Keep only the top-N slices by value.
valueFormatter(n: number) => string-Formats a numeric value for labels and tooltips
tooltipFormatter(slice: PieSliceContext) => string-Returns custom tooltip HTML for a hovered datum (sanitized before it is inserted)
onHighlightItem(labels: string[]) => void-Called when the hovered/highlighted label(s) change
Common props - shared by every chart (14)
PropTypeDefaultDescription
widthnumber600Chart width in pixels
heightnumber420Chart height in pixels
marginMargin{ top: 36, right: 8, bottom: 8, left: 8 }Inner margins (top/right/bottom/left, in px); default 8 (36 top with a title)
colorsstring[]-Categorical palette for rings without an explicit colour or colorsMapping entry
colorsMappingRecord<string, string>-Explicit label -> colour map; takes precedence over the palette and per-item colours
highlightItemsstring[]-Labels to emphasise (active styling); others keep their base opacity
disabledItemsstring[]-Labels to hide entirely (ring + track removed; remaining rings keep their radii order)
renderer"svg" | "canvas" | "webgpu""svg"Render as inline SVG (default) or to a canvas / WebGPU layer; getContext() is identical either way
localestring-BCP-47 locale used for number formatting
skipColorMappingDispatchbooleanfalseExternal-CSS mode: unmapped labels resolve to transparent and onColorMappingGenerated is not emitted, so arc colours come from your CSS via the data-label-safe contract
enableTransitionsbooleantrueAnimate opacity/arc changes with CSS transitions (SVG renderer; default true)
onColorMappingGenerated(mapping: Record<string, string>) => void-Called with the resolved label -> colour map after the chart assigns colours
onChartDataProcessed(context: ChartContext) => void-Called with the renderer-agnostic ChartContext whenever the data is (re)processed
onDataWarning(warnings: DataWarning[]) => void-Called with any non-fatal data warnings (out-of-range values, duplicate labels, ...)

Events

Web component phát ra các CustomEvent nổi bọt (bubbling) sau đây (engine cũng cung cấp tương đương qua các callback on* trong bảng ở trên):

EventDetailKích hoạt khi
michi-vz:highlightstring[]khi trạng thái tô sáng hover thay đổi
michi-vz:colormappingRecord<string, string>khi một color mapping được tạo ra
michi-vz:dataprocessedChartContextkhi dữ liệu được xử lý (lại)
michi-vz:datawarningDataWarning[]khi phát hiện cảnh báo về dữ liệu đầu vào

getContext()

mountPieChart(el, props).getContext() trả về một PieChartContext không phụ thuộc bộ dựng: mode ("pie" hoặc "donut"), innerRadiusRatio, các slices (label / value / share / góc bắt đầu & kết thúc), số liệu thống kê tóm tắt (số lượng lát, tổng, lát lớn nhất), một bản tóm tắt ngôn ngữ tự nhiên có tính xác định, và một bảng a11y. Xem ngữ cảnh LLM.

Source

Các prop được định kiểu là PieChartProps trong @michi-vz/core.