Chord diagram in Power BI: who exchanges with whom, both ways
Get started with Chord Plume: prepare a From / To / Value table, insert the visual, read the ribbons, isolate a name's flows and pick the year to show.
Lire en françaisIn short
What is a chord diagram? Names (regions, countries, teams, brands) sit as arcs around a circle. Each ribbon links two names and shows what they exchange: people moving, goods, customers switching brands. The wider the ribbon, the bigger the exchange.
Mini example. In 2025, 5,540 people leave Île-de-France for Nouvelle-Aquitaine and 1,540 go the other way. The ribbon linking these two arcs is 5,540 wide on the Île-de-France side and 1,540 wide on the Nouvelle-Aquitaine side: you see at a glance which way the exchange leans.
- What the visual does. Chord Plume draws these arcs and ribbons, places the labels so they never overlap, groups small names into "Others", isolates a name's flows on hover and filters the page on click. As premium features (★), it adds the play axis (the diagram replayed from one year to the next with animated transitions), two half circles (origins on the left, destinations on the right), a net balance ring, groups (countries by continent) and the change since a reference period.
- When to use it. Migrations, trade, staff moving between teams, customers moving between offers, commuting: whenever names exchange with each other, both ways.
- When to use something else. Steps that follow one another (channel, then order, then delivery): Sankey Plume. A single value per name: Bar Plume.
- What you will learn. Prepare a From / To / Value table, insert the visual, read a ribbon, isolate a name's flows, filter the page, replay the years.
- What you need: Power BI Desktop, the Chord Plume visual installed (see the common basics), a table with an origin, a destination and a number. The PlumeChord-Sample-EN sample report, in your "Downloads" area, shows moves between regions with the play axis and a matrix between teams (page 1), trade between countries (page 2) and the premium features ★ (page 3).
The data to provide
The shape. One row per flow: an origin, a destination and a quantity. The same pair can appear on several rows (per month, per reason): the visual adds them up.
| Origin region | Destination region | Year | People |
|---|---|---|---|
| Île-de-France | Nouvelle-Aquitaine | 2025 | 5,540 |
| Nouvelle-Aquitaine | Île-de-France | 2025 | 1,540 |
| Île-de-France | Occitanie | 2025 | 5,210 |
| Occitanie | Île-de-France | 2025 | 1,380 |
| Nouvelle-Aquitaine | Occitanie | 2025 | 1,950 |
| Occitanie | Nouvelle-Aquitaine | 2025 | 1,620 |
| Brittany | Île-de-France | 2025 | 640 |
| Île-de-France | Brittany | 2025 | 2,300 |
To try without a file: Modeling › New table, then paste:
Moves =
DATATABLE (
"Origin region", STRING, "Destination region", STRING, "Year", INTEGER, "People", INTEGER,
{
{ "Île-de-France", "Nouvelle-Aquitaine", 2025, 5540 },
{ "Nouvelle-Aquitaine", "Île-de-France", 2025, 1540 },
{ "Île-de-France", "Occitanie", 2025, 5210 },
{ "Occitanie", "Île-de-France", 2025, 1380 },
{ "Nouvelle-Aquitaine", "Occitanie", 2025, 1950 },
{ "Occitanie", "Nouvelle-Aquitaine", 2025, 1620 },
{ "Brittany", "Île-de-France", 2025, 640 },
{ "Île-de-France", "Brittany", 2025, 2300 }
}
)
The measure. The "Value" well expects a measure (a calculation Power BI redoes for the current filters, written in DAX; see the glossary):
People moving = SUM ( Moves[People] ) -- adds up the rows of each origin → destination pair
Pitfalls.
- A name must be spelled the same way in both columns ("Île-de-France" on both sides): that is what makes it a single arc.
- Without a measure in "Value", each row counts as 1: handy to count records, misleading if your rows are already totals.
- Negative values are left out (a ribbon cannot have a negative width); a warning icon says so.
- Your data is a matrix (one column per destination, as in Excel)? Leave "To" empty and drop one measure per column into "Value": each measure becomes a destination named after it.
Step by step
- Create the table and the measure from the previous section.
- In the Visualizations pane, click the Chord Plume icon: an empty frame appears with "Add fields to draw the chord diagram".
- Drop
Origin regioninto From andDestination regioninto To. - Drop the
People movingmeasure into Value. The circle is drawn: one arc per region, one ribbon per pair of regions, with the automatic title "Origin region to Destination region flows". - Read a ribbon: hover the one linking Île-de-France and Nouvelle-Aquitaine. The tooltip gives both directions ("Île-de-France → Nouvelle-Aquitaine", "Nouvelle-Aquitaine → Île-de-France") and the net balance. The wider end is on the side that sends more.
- Hover the Île-de-France arc: only its ribbons stay sharp. In Format › Interactions › Hovering an arc: ribbons shown, pick Sent only to see departures only.
- Click the Île-de-France arc: the other visuals of the page are filtered on its flows. Click an empty spot of the circle to clear.
- Labels: in Format › Category labels › Content, pick Name, value and %. A name that is too long is shortened or goes horizontal with a leader line: two labels never overlap.
- To see a single year, add a slicer (native visual) on
Yearto the page and click 2025: the diagram keeps only that year's flows. To replay the years one by one with animated transitions, see the play axis ★ in the use cases.
Troubleshooting
| What you see | Likely cause | Fix |
|---|---|---|
| The landing page stays | "From" is missing, or "To" and a measure | Drop a column into From and one into To (or at least two measures into Value for a matrix) |
| A name has two arcs | Different spelling in the two columns (space, accent, case) | Clean the values in Power Query |
| Pointed ribbons, with no width on one side | The flow only goes one way | This is by design: pick Format › Layout › Flow direction › One ribbon per direction, with an arrow if you prefer arrows |
| A gray "Others" arc | More than 20 names | Format › Layout › Names shown at most (the rest in « Others ») (up to 60), or filter the page |
| The circle is small | Long labels | Format › Category labels › Maximum label room (% of the visual), or Content: Name |
| The message "Without "Value", each From → To row counts as 1" | No measure in Value | Drop a quantity measure into Value |
| Loops on an arc | Rows where origin = destination (moves within the same region) | Format › Layout › Flows to itself (A → A): Hide |
Key takeaways
- One row per flow: From, To, and a measure in Value.
- Each end of a ribbon is as wide as what its arc sends to the other; the tooltip gives both directions and the balance.
- Hover an arc: its ribbons; click: filters the page.
- A slicer on the year picks the period; the play axis ★ replays it with animated transitions.
Going further: the use cases (matrix, Others, two half circles ★, net balance ★, groups ★…), the fields and settings page, the common basics of Plume visuals, the Chord Plume page and support.