Hierarchy & flow
Two data shapes cover this whole family: parent-linked nodes for
hierarchies and { from, to, value } links for flows. Both live in a
regular series’ data array.
Treemap
Flat { name, value } points tile the plane; add parent to nest:
live
import Charts from '@lemonadejs/charts';
const series = [{ data: [
{ name: 'Compute', value: 42 }, { name: 'Storage', value: 26 },
{ name: 'Network', value: 14 }, { name: 'Support', value: 10 },
{ name: 'Other', value: 8 },
] }];
const App = () => html`<${Charts} type="treemap" series="${series}" labels />`;Sunburst and icicle
The same parent-linked shape renders as concentric rings (sunburst) or
horizontal slabs (icicle). Branch nodes take value: 0, so their size is
the sum of their children:
live
import Charts from '@lemonadejs/charts';
const series = [{ data: [
{ name: 'Web', value: 0 }, { name: 'API', value: 0 },
{ name: 'Pages', parent: 'Web', value: 30 },
{ name: 'Assets', parent: 'Web', value: 18 },
{ name: 'Auth', parent: 'API', value: 12 },
{ name: 'Data', parent: 'API', value: 24 },
{ name: 'Cache', parent: 'Data', value: 9 },
] }];
const App = () => html`<div>
<${Charts} type="sunburst" series="${series}" labels />
<${Charts} type="icicle" series="${series}" labels />
</div>`;Deeper levels lighten automatically from the root color, so the hierarchy reads at a glance with any palette.
Sankey
Links are { from, to, value }. Nodes are inferred from the link ends,
laid out in columns, with flow widths proportional to value:
live
import Charts from '@lemonadejs/charts';
const series = [{ data: [
{ from: 'Coal', to: 'Power', value: 25 },
{ from: 'Gas', to: 'Power', value: 20 },
{ from: 'Solar', to: 'Power', value: 10 },
{ from: 'Power', to: 'Homes', value: 30 },
{ from: 'Power', to: 'Industry', value: 25 },
{ from: 'Gas', to: 'Homes', value: 8 },
] }];
const App = () => html`<${Charts} type="sankey" series="${series}" labels />`;Chord and arc diagram
The same link shape, different layouts:
- chord is a dependency wheel: nodes around a circle, ribbons between them sized by value. Good for trade/traffic matrices.
- arcdiagram: nodes on a line, arcs above it. Good when node order matters (timelines, sequences).
const series = [{ data: [
{ from: 'US', to: 'EU', value: 30 }, { from: 'US', to: 'Asia', value: 20 },
{ from: 'EU', to: 'Asia', value: 25 }, { from: 'Asia', to: 'US', value: 35 },
] }];
html`<${Charts} type="chord" series="${series}" labels />`