Skip to content

API Biểu đồ cột chồng dọc

Cho thấy mỗi danh mục được cấu thành từ những gì, từng phân đoạn một, với các phần bị thiếu được gắn cờ cảnh báo thay vì bị bỏ qua - xem bản demo Biểu đồ cột chồng dọc.

Import

ts
import "@michi-vz/wc/vertical-stack-bar-chart";
// <michi-vz-vertical-stack-bar-chart> is now defined
ts
import { mountVerticalStackBarChart } from "@michi-vz/core";

const chart = mountVerticalStackBarChart(el, props);

Props

PropTypeDefaultDescription
timelineboolean | TimelinePeriodConfig-Opt-in "play through years" (cumulative): the marks draw UP TO the active period and extend as the timeline steps; `interpolate` sweeps smoothly between years, `false` jump-cuts. Headless controller via `chart.timeline()` plus the built-in play button + scrubber. Off by default; wins over `progressiveDraw` when both are set.
progressiveDrawboolean | ProgressiveDrawConfig-Opt-in reveal animation: wipes the marks in left to right on mount (a clip reveal; axes and titles stay put). `true` uses defaults (1200 ms, easeInOutCubic); a config tunes durationMs, easing, autoplay, and replayOnUpdate (`tipLabel` is LineChart-only and ignored here). Off by default; respects prefers-reduced-motion (renders fully drawn instantly) and `replay()` re-runs it.
dataSet*VerticalStackBarDataSet[]-Array of grouped series; each entry contributes its own bar slot per date and stacks its segment keys vertically
keysstring[]-Explicit stack order; present keys first (in this order), natural keys appended.
keysOrder"topToBottom" | "bottomToTop""topToBottom"Where keys[0] sits in the stack: "topToBottom" (default) puts keys[0] at the top, "bottomToTop" anchors keys[0] at the bottom
titlestring-Optional chart title rendered above the plot
xAxisLabelPaddingnumber-Min gap (px) a horizontal x-axis label needs before it tilts -45°. Raise it to give crowded date labels more breathing room (they rotate sooner instead of sitting flush). Default 8 (legacy parity).
xAxisMode"auto" | "horizontal"-"auto" (default) tilts crowded date labels -45°; "horizontal" keeps them flat (thinning instead), so no rotated-label bottom margin is reserved.
xAxisFormat(d: number | string) => string-Formats an x tick value into its display label
yAxisFormat(d: number | string) => string-Formats a y tick value into its display label
xAxisDomainstring[]-Explicit ordered list of date band categories; overrides the auto-collected, sorted set of dates from the data
yAxisDomain[number, number]-Fix the y-axis range as [min, max] instead of deriving it from the data
minBarWidthnumber5Minimum width in px for each bar slot, floored when bands get narrow (default 5)
minBarHeightnumber15Minimum height in px for a non-zero segment so thin values stay visible (default 15)
minBarHeightZeronumber0Height in px drawn for an explicit zero-value segment (default 0, i.e. nothing)
missingDataMarker{ height: number }-Opt-in thin stub on the zero line for explicitly-missing (null/NaN) owned keys.
filter{ limit: number; sortingDir: "asc" | "desc"; date?: string }-Keep only the top-N dates ranked by grand total across all series and keys: limit caps the count, sortingDir picks highest (desc) or lowest (asc), optional date is the reference date; chronological order is preserved in output
isLoadingboolean-Show the loading overlay and skip the no-data check.
isNodata| boolean | ((dataSet: VerticalStackBarDataSet[] | null | undefined) => boolean)-No-data override: boolean or predicate; default = empty / all-empty-series.
noDataLabelstring-Text for the vanilla default no-data overlay.
suppressDefaultOverlayboolean-A framework wrapper sets this to render its OWN loading/no-data node.
fontFamilystring-Font family for axis/label text (SVG + canvas) via --michi-vz-font-family.
yTicksnumber-Number of y-axis ticks (default 10).
showGridLinesboolean-Draw horizontal dashed y grid lines (default true).
highlightZeroLineboolean-Emphasise the y=0 line with a solid stroke (default true).
tooltipFormatter(d: StackTooltipData) => 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
onLegendDataChange(legendData: StackLegendItem[]) => void-Called with the computed legend items (label, color, order, disabled, dataLabelSafe) whenever the legend changes
Common props - shared by every chart (14)
PropTypeDefaultDescription
widthnumber900Chart width in pixels
heightnumber480Chart height in pixels
marginMargin{ top: 50, right: 50, bottom: 100, left: 60 }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, ...)

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

mountVerticalStackBarChart(el, props).getContext() trả về một VerticalStackBarChartContext không phụ thuộc bộ dựng (số liệu thống kê có cấu trúc + một bản tóm tắt ngôn ngữ tự nhiên có tính xác định + một bảng a11y). Xem ngữ cảnh LLM.

Source

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