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

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/chord-plume-prise-en-main
- Published: 2026-10-21
- Visual: Chord Plume, technical reference: https://plumevisuals.com/ai/visuals/chord.md
- If an option name in this tutorial differs from the technical reference, the reference is right (it is generated from the visual's code).

## In 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](/en/tutorials/bien-demarrer-visuels-plume)), a table with an origin, a destination and a number. The **PlumeChord-Sample-EN** sample report, in your ["Downloads"](/en/account/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:

```dax
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](/en/tutorials/bien-demarrer-visuels-plume#glossary)):

```dax
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

1. Create the table and the measure from the previous section.
2. In the **Visualizations** pane, click the Chord Plume icon: an empty frame appears with "Add fields to draw the chord diagram".
3. Drop `Origin region` into **From** and `Destination region` into **To**.
4. Drop the `People moving` measure 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".
5. 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.
6. 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.
7. 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.
8. 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.
9. To see a single year, add a slicer (native visual) on `Year` to 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](/en/tutorials/chord-plume-cas-pratiques).

## 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](/en/tutorials/chord-plume-cas-pratiques) (matrix, Others, two half circles ★, net balance ★, groups ★…), the [fields and settings](/en/tutorials/chord-plume-champs-et-reglages) page, the [common basics of Plume visuals](/en/tutorials/bien-demarrer-visuels-plume), the [Chord Plume page](/en/visuals/chord) and [support](/en/support).
