Charts
Multidimensional, hierarchy and geography
The three families here need something outside the rows — a shared scale, a parent/child relation, or a map — so each one states exactly what the caller must supply and refuses to guess.
Pairwise relationships
A scatterplot matrix is n × (n − 1) grids: the diagonal is left out because a variable against itself carries no information, and a diagonal of histograms would double the render cost for a decoration.
Scatterplot matrix
Four measures, twelve cells, shared axes per row and column so a correlation reads as a slope. Past six variables, use parallel coordinates.
Hierarchy
A dendrogram, a file tree or an org chart. The engine supplies the layout and the collapse interaction — geometry, not statistics — and LUC supplies the label model and the tone contract.
Hierarchy
Leaves take their colour from their own tone, so the same shape can serve an editing tree and a JSON inspector.
Geography
LUC ships no map data: a boundary file is large, it carries a licence, and bundling one would impose a particular political boundary set on every consumer. Registration is therefore the caller's explicit step.
Geographic scatter
Registered by this page from a synthetic grid, which proves the mechanism without shipping a boundary set.
Nothing to plot
Register a map with registerEChartsMap, then supply points.
How to use it
Register once, before the first render, then scatter. A choropleth additionally needs a value per region, which is a different contract — see the roadmap below.
import { registerEChartsMap, GeoScatterChart } from "@luc/ui/charts";
// Once, before the first render.
await registerEChartsMap("world", worldGeoJson);
<GeoScatterChart mapName="world" points={offices} />Blocked: a choropleth needs region data plus a registered map, and a 3D surface needs echarts-gl (~180 KB). Neither is in the base entry point, and neither will be bundled by default.