Ribbon width is proportional to displaced persons (sqrt scale, area = volume). Arrows point to host countries. Click or hover an origin to isolate its corridors. Data: simulated 2024 displacement estimates.
A Flow Map draws directed lines between geographic points where the thickness of each ribbon encodes the volume of movement. The viewer reads two things simultaneously: the geographic path of a flow (where it goes) and its magnitude (how much moves). This is the key distinction from a Connection Map — in a flow map, width is data, not decoration. A thick ribbon means more; a thin ribbon means less. The tapering shape also encodes directionality: wide at the origin, narrowing toward an arrowhead at the destination.
Ribbons are drawn as filled SVG polygons — closed quadratic Bézier paths — rather than stroked lines. This matters because perceived area is a more accurate quantitative channel than perceived stroke-width. Width is scaled via d3.scaleSqrt() so that area is proportional to the flow volume, following the same Flannery principle that governs proportional symbol (bubble) maps.
This example shows simulated 2024 forced displacement estimates for six origin countries. Syria's corridor to Turkey is the widest single ribbon on the map — approximately 3.6 million displaced persons. Venezuela's flow to Colombia is the second-largest. The cluster of ribbons converging on East Africa from South Sudan, and the relatively thin flows from Myanmar to Bangladesh, illustrate how the flow map makes both volume and destination geography simultaneously legible. Click any origin node or legend row to isolate its corridors. Use the conflict/economic filters to compare displacement type.
A flow map draws directed lines between geographic points where the thickness of each line encodes the volume of the movement. The viewer reads two things simultaneously: the geographic path of a flow (where it goes) and its magnitude (how much moves). The key perceptual contract of a flow map — absent in connection maps — is that width is data. A thick ribbon means more; a thin ribbon means less. The ribbon is a proportional symbol stretched along a path. Flow maps sit in the FT Visual Vocabulary's Spatial / Movement category. They are the geographic equivalent of a Sankey diagram — except the node positions are geographic facts, not layout choices.
The data has three simultaneous qualities that the flow map handles and no other chart type does: directionality (from crisis origin to host country), volume (magnitude of movement, which varies by orders of magnitude across corridors), and geography (the physical distance and direction of each corridor are meaningful — Syria to Turkey is a different story from Syria to Germany). Removing any of these qualities changes what you can read from the chart.
The connection map handles a similar dataset but with a different message: it shows the structure of a logistics network where the volume difference between corridors is secondary. Here, the message is about which corridors dominate — Syria to Turkey's ribbon is more than four times wider than Syria to Germany's. That magnitude difference is the story, and a tapered ribbon makes it legible at a glance.
A connection map would replace the tapered ribbon with a uniform-width stroke, encoding volume only through stroke-width — a weaker perceptual channel than area. The viewer has to mentally compare line widths rather than areas, which is harder and less accurate. More critically, a connection map implies bidirectional relationships; a flow map implies directional movement. A Sankey diagram would encode volume accurately through ribbon width at every point in the flow — but it would discard geography entirely. The fact that Uganda and Kenya both border South Sudan and receive its largest flows is visible in the flow map; in a Sankey it is invisible. A bubble map would show total outgoing displacement per origin as a circle but would erase every destination, every corridor, and every directionality.
The FT Visual Vocabulary distinguishes flow maps from connection maps on directionality and volume encoding: use a connection map when the story is about network structure and link presence; use a flow map when the magnitude of each directed flow is the primary variable. The operative test: does the width of each line carry a data value? If yes, it is a flow map.
The flows are drawn as filled SVG paths — closed quadratic Bézier polygons that taper from a wide base at the origin to an integrated arrowhead at the destination. stroke-width on an SVG path is constant along the entire length; a filled polygon can genuinely taper, encoding directionality in the shape itself (wide = origin, narrow = destination). Perceived area of a filled shape is a more accurate magnitude channel than perceived width of a stroked line — the same Flannery principle that governs bubble maps. Width is scaled via d3.scaleSqrt() so that perceived area is proportional to the flow volume rather than the radius.