Dumbbell chart in Power BI: the gap between two values
Get started with Dumbbell Plume: prepare the data, create two measures, insert the visual, sort by gap, read the ▲▼ gap and color by direction.
Lire en françaisIn short
What is a dumbbell? Two points on the same row joined by a bar: the first point is a starting value (last year, plan, before), the second one the ending value (this year, actual, after). The length of the bar is the gap. You compare dozens of categories at a glance, without placing two bars side by side.
Mini example. The Manchester store made $498K in 2024 and $541K in 2025: one point at 498, one at 541, a bar between them, and the gap "▲ +$43K" written on the right.
- What the visual does. Dumbbell Plume draws one dumbbell per category, writes the gap as a value or a percentage with ▲ ▼, colors it by direction (favorable or unfavorable), sorts by gap, horizontally or vertically. Premium (★): animated play axis, stability threshold, averages, logarithmic scale, more than two points, arrows, images, targets, ranges, groups and small multiples.
- When to use it. Before / after, plan / actual, last year / this year, men / women, two scenarios, two regions: whenever you want to read the gap between two values across many categories.
- When to use something else. A trend over many periods: Line Plume. Breaking a total gap down into contributions: Waterfall Plume.
- What you will learn. Prepare a table, create two measures, insert the visual, sort, read the gap, color by direction, filter the page by clicking.
- What you need: Power BI Desktop, the Dumbbell Plume visual installed (see the common basics), a table with a category and two values. The PlumeDumbbell-Sample-EN sample report, in your "Downloads" area, shows the sales of 12 stores (page 1), an animated pay gap and a budget (page 2), and the ★ features (page 3).
The data to provide
The shape. One row per category (a store, a product, a country), with the two values to compare. They can be in two columns, or in one column with a "Year" column (see the use cases).
| Store | Region | Sales 2024 | Sales 2025 |
|---|---|---|---|
| Bristol | South West | 412,000 | 468,000 |
| Bath | South West | 386,000 | 352,000 |
| Manchester | North | 498,000 | 541,000 |
| York | North | 178,000 | 151,000 |
| Cambridge | East | 356,000 | 402,000 |
| Norwich | East | 201,000 | 188,000 |
| Cardiff | Wales | 318,000 | 377,000 |
| Newport | Wales | 109,000 | 97,000 |
To try it without a file: Modeling › New table, then paste:
Stores =
DATATABLE (
"Store", STRING, "Region", STRING, "Sales 2024", INTEGER, "Sales 2025", INTEGER,
{
{ "Bristol", "South West", 412000, 468000 },
{ "Bath", "South West", 386000, 352000 },
{ "Manchester", "North", 498000, 541000 },
{ "York", "North", 178000, 151000 },
{ "Cambridge", "East", 356000, 402000 },
{ "Norwich", "East", 201000, 188000 },
{ "Cardiff", "Wales", 318000, 377000 },
{ "Newport", "Wales", 109000, 97000 }
}
)
The measures. The Start and End wells expect measures (a calculation Power BI recomputes for each filter, written in DAX; see the glossary):
Sales 2024 = SUM ( Stores[Sales 2024] ) -- one row per store: the sum is the store's value
Sales 2025 = SUM ( Stores[Sales 2025] )
Give them a format (Measure tools › Format: Currency, Whole number…): the visual uses it for labels, the axis and the gap.
Pitfalls.
- The gap is always End − Start: put the starting value in Start.
- With a single dated sales table, write both measures with a year filter, for example
Sales 2025 = CALCULATE ( [Sales], 'Calendar'[Year] = 2025 ). - A category whose two values are blank is not drawn; with only one value, a single point is shown, without bar or gap.
Step by step: your first dumbbell chart in 10 minutes
- In the Visualizations pane, click the Dumbbell Plume icon. An empty frame appears with a landing page that lists the fields to drop.
- Drop
Storeinto Category (one dumbbell each). - Drop
Sales 2024into Start (first point), thenSales 2025into End (last point). One dumbbell per store appears, sorted from the largest 2025 sales to the smallest, with a legend and the Gap column on the right. - Hover a dumbbell: the tooltip gives both values, the gap and the gap in %.
- Open Format › Gap › Content and choose Value and percentage: the column shows "▲ +$43K (+8.6%)".
- Open Format › Sort › Sort by and choose Gap (end − start): the largest increases go to the top, the decreases to the bottom.
- Open Format › Data colors › Coloring and choose By direction of the gap; in Format › Dumbbells › Connector › Color, also choose By direction of the gap. Increases turn green, decreases red, the first point lighter.
- For costs or delays, turn on Format › Gap direction › A decrease is favorable: decreases turn green. The ▲ or ▼ stays written: the direction never depends on color alone.
- Turn on Format › Dumbbells › Points › Hollow first point: the starting point becomes a ring, the eye goes from the ring to the full point.
- Click a dumbbell: the other visuals on the page filter on that store (cross-filtering, see the glossary). Click an empty area to clear.
Expected result: one dumbbell per store, sorted by gap, green or red by direction, with the gap as a value and a percentage in the right-hand column.
Troubleshooting
| What you see | Likely cause | Fix |
|---|---|---|
| "Add fields to get started" landing page | No measure in Start, End or Values | Add at least one measure |
| A single dumbbell | No field in Category | Drop the category column into Category |
| Single points, no bar or gap | Only one measure | Add the second one in Start or End |
| Gap with the wrong sign | The measures are swapped | Put the starting value in Start |
| "No dumbbell to show" | All values are blank (filter) | Check the filters and the measures |
| The chart scrolls | Many categories | Expected: lower Format › Dumbbells › Layout › Minimum row height, or Format › Sort › Show the first N |
| "Premium preview" watermark | A ★ feature is used without a key | Key in Format › Plume Studio License, or a free setting |
| Gap in "pp" instead of % | The measure has a percentage format | Expected: the gap between two rates is in percentage points; Percentage in Format › Gap › Content for the relative gap |
Key takeaways
- One row per category; Start = from, End = to; gap = End − Start.
- The default sort follows the last point; sort by gap to see the largest changes.
- The direction of the gap is always written (▲ ▼); color only underlines it.
- Two points, the gap direction, the gap as a value or a % and sorting are free; the play axis, the stability threshold, averages, the logarithmic scale and the ratio gap are ★.
Learn more
- Dumbbell Plume use cases: recipes for common needs.
- Dumbbell Plume fields and settings: every field well and every setting.
- Getting started with Plume visuals: installation, license, styles and common settings.
- The visual page: Dumbbell Plume. A question: support.