Skip to content

API Camembert / Anneau

Des parts dimensionnées selon leur part du tout, avec un mode anneau accessible via une seule propriété (innerRadiusRatio) - voir la démo Camembert / Anneau.

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);

Propriétés

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) reserved for axes, titles, and labels
colorsstring[]-Categorical palette for series/labels 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; all other marks dim
disabledItemsstring[]-Labels to hide and exclude from scales/stacks
renderer"svg" | "canvas" | "webgpu""svg"Render as inline SVG (default) or to a canvas (faster for large datasets); getContext() is identical either way
localestring-BCP-47 locale used for number and date formatting
skipColorMappingDispatchbooleanfalseExternal-CSS mode: unmapped labels resolve to transparent and onColorMappingGenerated is not emitted, so mark colours come from your CSS via the data-label-safe contract
enableTransitionsbooleantrueAnimate updates with CSS transitions (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 (duplicate labels, non-finite values, non-monotonic dates, ...)

Événements

Le composant web émet ces CustomEvents à bouillonnement (bubbling) (le moteur expose les mêmes via les callbacks on* du tableau ci-dessus) :

ÉvénementDétailSe déclenche quand
michi-vz:highlightstring[]la surbrillance au survol change
michi-vz:colormappingRecord<string, string>un mapping de couleurs est généré
michi-vz:dataprocessedChartContextles données sont (re)traitées
michi-vz:datawarningDataWarning[]des avertissements sur les données d'entrée sont détectés

getContext()

mountPieChart(el, props).getContext() retourne un PieChartContext indépendant du moteur de rendu : le mode ("pie" ou "donut"), innerRadiusRatio, les slices (étiquette / valeur / part / angle de début et de fin), des statistiques de synthèse (nombre de parts, total, plus grande part), un résumé déterministe en langage naturel, et une table d'accessibilité. Voir Contexte LLM.

Source

Les propriétés sont typées comme PieChartProps dans @michi-vz/core.