Components/Custom Chart

Custom Chart

The composable escape hatch: a TxChart container plus axis/grid/series primitives for lines, areas, bars, scatter and donuts.

VerifiedSince 0.1.0

Custom Chart

Basic Usage

kumo's escape hatch pipes raw echarts options into a low-level Chart; without echarts, the escape hatch here is composition: TxChart establishes the coordinate system (measures the container, derives scales, allocates palette slots) and axes/grid/series mount as children in its default slot. Series read data through accessors (a key or (d, i) => v); without color they take categorical slots in mount order. The x/y domains derive from the union of all series data, and xDomain/yDomain override explicitly.

Bars + line composed

Band axis + bars + line

Bars and a line share one coordinate system; band values map to band centers.

Loading demo...

Donut

TxArcSeries

Axis-free mode: TxChart acts as a sized surface and the arc series lays itself out.

Loading demo...

Custom tooltip

Overlay slot + TxChartTooltip

With follow='x' the tooltip pins vertically and only tracks horizontally.

Loading demo...

Composition Rules

  • Series/axes/grid must be descendants of <TxChart> — they read scales from the injected chart context and throw when used standalone.
  • Multiple TxBarSeries: without stack they lay out side by side; sharing a stack key stacks them, and the y domain covers stacked totals automatically.
  • TxArcSeries needs no coordinate system and works in an axis-free TxChart.
  • The #overlay slot is a DOM layer above the SVG (pointer-events: none) for tooltips and annotations.
  • For deep customization, call useChartContext() in your own layer, or read scales from the context exposed on the TxChart instance.

API

Chart Props

PropTypeDefaultDescription
heightnumber350Pixel height; ignored when aspectRatio is set.
aspectRationumber | stringContainer aspect ratio.
widthnumbermeasuredExplicit width (SSR/tests).
paddingnumber | Partial<ChartPadding>24Inner padding reserved for axes and labels.
xType'linear' | 'time' | 'band''linear'Kind of x scale.
xDomain / yDomainarraysauto unionExplicit domains.
yNicebooleantrueRound the derived y domain.
ariaDescriptionstringAccessible description.

Series Props (shared)

PropTypeDescription
dataT[]Data rows.
x / ykeyof T | (d, i) => vAccessors.
colorstringDefaults to categorical slots in mount order.

TxLineSeries adds curve (linear/monotone/natural/step), strokeWidth, showSymbol, dashed; TxAreaSeries adds gradient (on by default) and fillOpacity; TxBarSeries adds stack, barWidth, radius; TxScatterSeries adds r (constant or accessor); TxArcSeries takes value/name?/color? accessors plus innerRadius/padAngle/cornerRadius and emits slice-click.

ChartTooltip Props

PropTypeDefaultDescription
openboolean | 'auto''auto''auto' shows while the pointer is inside; a boolean is controlled mode.
follow'both' | 'x''both'x pins the vertical position.
offsetnumber12Gap between pointer and tooltip.
title / rows / hiddenCountDefault content; the slot replaces it entirely.