Charts /
CH-FLO-02
CH-FLO-02 . family FLO
SANKEY
column-stacked nodes joined by width-true bands. Needs: 2-3 node columns + links between adjacent columns; conserved totals.
flowcompositionvariance-decomposition
Use when
- where things came from and where they went, conserved end to end
- sources to routes to destinations in one figure
Do not use when
- cyclic flows (sankeys are acyclic by construction)
- more than ~6 nodes per column
See instead
Alternatives
- CH-FLO-01 (one total changing through steps)
- CH-PTW-01 (composition without flow)
Rules
- band width IS the value, at both ends; totals conserve per node
- nodes stacked deterministically in input order, centered per column
- links drawn in input order: order is part of the spec
Never do this
- links whose widths change between ends
- crossing minimization by randomization
- cycles
- more than 3 columns
QA before delivering
- per-node conservation
- adjacent-column links only
- input order preserved
- source present
Data shape
| title | action title with a number |
| source | bottom-left always |
| unit | on first node label |
| columns | [{name, nodes: [{name, value}]}] 2-3 columns |
| links | [{from, to, value}] adjacent columns only |
Sample data (golden)
{
"title": "Road carries 70 of 130 loads; barge stays marginal",
"eyebrow": "ORIGIN TO ROUTE . JUNE",
"source": "Source: sample dataset v1, 2026-07-12",
"unit": "loads",
"columns": [
{
"name": "Origin",
"nodes": [
{
"name": "Supplier A",
"value": 60
},
{
"name": "Supplier B",
"value": 40
},
{
"name": "Supplier C",
"value": 30
}
]
},
{
"name": "Route",
"nodes": [
{
"name": "Road",
"value": 70
},
{
"name": "Rail",
"value": 40
},
{
"name": "Barge",
"value": 20
}
]
}
],
"links": [
{
"from": "Supplier A",
"to": "Road",
"value": 35
},
{
"from": "Supplier A",
"to": "Rail",
"value": 25
},
{
"from": "Supplier B",
"to": "Road",
"value": 25
},
{
"from": "Supplier B",
"to": "Barge",
"value": 15
},
{
"from": "Supplier C",
"to": "Road",
"value": 10
},
{
"from": "Supplier C",
"to": "Rail",
"value": 15
},
{
"from": "Supplier C",
"to": "Barge",
"value": 5
}
]
}