Public Transport Transfers Sankey Diagram: Editable Template
Follow morning-peak passengers from first mode through interchanges to their last leg, and see which hub carries the transfer load. An editable template with invented figures.
A transfers Sankey shows how passengers move between modes. Each ribbon is a group of passengers, so the interchanges that carry the most people stand out at once.
The example city network has four first modes: bus, tram, metro and regional rail. Passengers either change at one of three interchanges or travel straight through, then finish with a last leg such as an onward metro, a bus, a walk, a bike or a car park.
A route map shows where lines meet but not how many people use each connection. This diagram puts the numbers on the connections, which is useful when planning platform space, timetable links or where a delay would hurt most. The network and counts are invented; see the note under the diagram. For the demand side of services see /sankey/sankey-diagram-for-service-demand, and for how a body spends its money see /sankey/municipal-budget.
How to read this diagram
- In the morning peak 1,500 passengers are counted, and 940 of them (62.7%) change at one of the three interchanges.
- Central interchange is the busiest hub at 560 passengers, almost three in five of all transfers (59.6%); regional rail alone sends 200 of them there.
- 560 passengers (37.3%) travel without changing, and most of them finish on foot (330).
- Walking is the most common last leg at 620 passengers, followed by onward metro at 290; Northgate is the only interchange feeding the car park (80), which suggests park and ride demand there.
The data behind it
Invented passenger counts for a fictional city network in one morning peak. Not data about any real transport authority or operator.
| From | To | Amount (passengers) |
|---|---|---|
| Bus | Central interchange | 120 |
| Bus | Riverside interchange | 60 |
| Bus | Northgate interchange | 40 |
| Bus | No transfer (direct) | 180 |
| Tram | Central interchange | 90 |
| Tram | Riverside interchange | 70 |
| Tram | No transfer (direct) | 90 |
| Metro | Central interchange | 150 |
| Metro | Riverside interchange | 50 |
| Metro | Northgate interchange | 100 |
| Metro | No transfer (direct) | 200 |
| Regional rail | Central interchange | 200 |
| Regional rail | Northgate interchange | 60 |
| Regional rail | No transfer (direct) | 90 |
| Central interchange | Onward metro | 200 |
| Central interchange | Onward bus | 120 |
| Central interchange | Walk | 190 |
| Central interchange | Bike | 50 |
| Riverside interchange | Onward metro | 50 |
| Riverside interchange | Onward bus | 40 |
| Riverside interchange | Walk | 60 |
| Riverside interchange | Bike | 30 |
| Northgate interchange | Onward bus | 60 |
| Northgate interchange | Walk | 40 |
| Northgate interchange | Bike | 20 |
| Northgate interchange | Car park | 80 |
| No transfer (direct) | Walk | 330 |
| No transfer (direct) | Bike | 90 |
| No transfer (direct) | Car park | 100 |
| No transfer (direct) | Onward metro | 40 |
The same data as CSV
source,target,value
Bus,Central interchange,120
Bus,Riverside interchange,60
Bus,Northgate interchange,40
Bus,No transfer (direct),180
Tram,Central interchange,90
Tram,Riverside interchange,70
Tram,No transfer (direct),90
Metro,Central interchange,150
Metro,Riverside interchange,50
Metro,Northgate interchange,100
Metro,No transfer (direct),200
Regional rail,Central interchange,200
Regional rail,Northgate interchange,60
Regional rail,No transfer (direct),90
Central interchange,Onward metro,200
Central interchange,Onward bus,120
Central interchange,Walk,190
Central interchange,Bike,50
Riverside interchange,Onward metro,50
Riverside interchange,Onward bus,40
Riverside interchange,Walk,60
Riverside interchange,Bike,30
Northgate interchange,Onward bus,60
Northgate interchange,Walk,40
Northgate interchange,Bike,20
Northgate interchange,Car park,80
No transfer (direct),Walk,330
No transfer (direct),Bike,90
No transfer (direct),Car park,100
No transfer (direct),Onward metro,40How it works
List first modes and interchanges
Add a node for each first mode and each interchange, plus one for journeys with no transfer.
Enter passenger counts per connection
Add a flow from each first mode to the interchange its passengers use, using counts from ticketing or counting surveys.
Add the last leg
Send each interchange and the no-transfer node to the last modes. Check each interchange's inflow equals its outflow.
Compare hubs
Look at which interchange carries the widest ribbons and test what a timetable change would do by editing the amounts.
Frequently asked questions
Can I show different times of day?
Yes. Make a copy of the chart for each period and change the amounts, or add a node per period; keep the unit the same so widths can be compared.
How do I get the numbers in?
Type them into the table, or paste a table or import a CSV with source, target and amount columns. The ribbons redraw from the amounts.
Edit this transfers Sankey
Open the template as your own chart and replace the modes, interchanges and passenger counts with your network.