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.

Public Transport Transfers Sankey Diagram: Editable Template (passengers)
FromToAmount (passengers)
BusCentral interchange120
BusRiverside interchange60
BusNorthgate interchange40
BusNo transfer (direct)180
TramCentral interchange90
TramRiverside interchange70
TramNo transfer (direct)90
MetroCentral interchange150
MetroRiverside interchange50
MetroNorthgate interchange100
MetroNo transfer (direct)200
Regional railCentral interchange200
Regional railNorthgate interchange60
Regional railNo transfer (direct)90
Central interchangeOnward metro200
Central interchangeOnward bus120
Central interchangeWalk190
Central interchangeBike50
Riverside interchangeOnward metro50
Riverside interchangeOnward bus40
Riverside interchangeWalk60
Riverside interchangeBike30
Northgate interchangeOnward bus60
Northgate interchangeWalk40
Northgate interchangeBike20
Northgate interchangeCar park80
No transfer (direct)Walk330
No transfer (direct)Bike90
No transfer (direct)Car park100
No transfer (direct)Onward metro40

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,40

How it works

  1. List first modes and interchanges

    Add a node for each first mode and each interchange, plus one for journeys with no transfer.

  2. 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.

  3. Add the last leg

    Send each interchange and the no-transfer node to the last modes. Check each interchange's inflow equals its outflow.

  4. 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.

Edit this transfers Sankey

More in Sankey diagrams