# All your bar and column charts in one Power BI visual: Bar Plume

> Get started with Bar Plume in Power BI: prepare your data and measures, then build a stacked column chart with data labels and totals in about 10 minutes.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/barres-top-n-objectif
- Published: 2026-10-04
- Visual: Bar Plume, technical reference: https://plumevisuals.com/ai/visuals/bar-chart.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).

## At a glance

**What the visual does.** Bar Plume draws bars (horizontal) or columns (vertical) to compare numbers across categories: revenue for each region, the number of cases per department, sales for each month. Picture a bookshelf: each category has its own spot, and the height of each book tells you how much it weighs. On its own, Bar Plume replaces Power BI's 5 bar charts (stacked, clustered, 100%, as bars or as columns), and adds small multiples, hierarchy drill-down, targets and variance arrows.

**When to use it:**
- compare a value across categories (regions, products, teams);
- show the composition of each total (revenue by channel within each region);
- compare two periods, or actuals and a target, bar by bar;
- repeat the same chart for each value of a field (one chart per year, per country).

**When to use something else:**
- for a trend over many dates, a line is easier to read (Line Plume);
- to explain how one total turns into another (bridge, waterfall), use Waterfall Plume.

**By the end, you will know how to:**
- prepare the data and write the useful DAX measures;
- choose between **Category**, **Legend (series)** and several measures, and understand what each one produces;
- switch from clustered to stacked bars, to 100%, then to small multiples;
- sort the bars, order the series, show values, shares and totals;
- add a target, variance arrows and reference lines.

**What you need:**
- Power BI Desktop (recent version);
- the Bar Plume visual installed (see [the shared basics](/en/tutorials/bien-demarrer-visuels-plume), "Installing a Plume visual");
- a table with at least one category column (text or date) and a number to add up (amount, quantity).

## The data you need

### The expected shape

Bar Plume draws **one bar per value of the column placed in Category**. For each bar, it calculates one or more **measures**. A measure is a DAX formula that calculates a number based on what is visible (see the [glossary](/en/tutorials/bien-demarrer-visuels-plume#glossary)): `Revenue = SUM ( Sales[Amount] )` gives the revenue of the bar's region, or of the whole table if no filter applies.

- What you **slice by** (region, channel, year, product) is a text or date **column**.
- What you **measure** (revenue, quantity, target) is a **measure**. Power BI also accepts a numeric column in **Values**: it then creates an automatic sum (implicit measure). A real measure is safer and can be reused.
- Your table can have one row per order, per day or per region: the **granularity** (the level of detail of a row) doesn't matter, Power BI adds things up for you.

### The sample dataset

A home goods retailer (fictitious data) sells in stores and online, in three regions, over two years. One row = one region, one channel, one year.

| Region | Channel | Year | Amount | Target |
|---|---|---|---|---|
| London | Store | 2024 | 820000 | 800000 |
| London | Web | 2024 | 410000 | 400000 |
| London | Store | 2025 | 845000 | 850000 |
| London | Web | 2025 | 520000 | 450000 |
| North West | Store | 2024 | 360000 | 350000 |
| North West | Web | 2024 | 140000 | 150000 |
| North West | Store | 2025 | 372000 | 380000 |
| North West | Web | 2025 | 188000 | 170000 |
| Wales | Store | 2024 | 255000 | 260000 |
| Wales | Web | 2024 | 95000 | 100000 |
| Wales | Store | 2025 | 248000 | 270000 |
| Wales | Web | 2025 | 131000 | 115000 |

To create it without a file: **Modeling › New table**, paste the formula below, then confirm.

```dax
Sales =
DATATABLE (
    "Region", STRING,
    "Channel", STRING,
    "Year", STRING,
    "Amount", INTEGER,
    "Target", INTEGER,
    {
        { "London", "Store", "2024", 820000, 800000 },
        { "London", "Web", "2024", 410000, 400000 },
        { "London", "Store", "2025", 845000, 850000 },
        { "London", "Web", "2025", 520000, 450000 },
        { "North West", "Store", "2024", 360000, 350000 },
        { "North West", "Web", "2024", 140000, 150000 },
        { "North West", "Store", "2025", 372000, 380000 },
        { "North West", "Web", "2025", 188000, 170000 },
        { "Wales", "Store", "2024", 255000, 260000 },
        { "Wales", "Web", "2024", 95000, 100000 },
        { "Wales", "Store", "2025", 248000, 270000 },
        { "Wales", "Web", "2025", 131000, 115000 }
    }
)
```

The year is deliberately text (`STRING`): it is a label used to slice, not a number to add up.

### The measures to create

Select the `Sales` table, then **Modeling › New measure**. Create one measure at a time.

```dax
// Revenue: adds up the Amount column
// over the rows visible for the bar (one region, one channel…)
Revenue = SUM ( Sales[Amount] )

// Target: same idea on the Target column
Target = SUM ( Sales[Target] )

// 2024 revenue only: CALCULATE recomputes [Revenue]
// keeping only the rows where the year is "2024"
Revenue 2024 = CALCULATE ( [Revenue], Sales[Year] = "2024" )

// 2025 revenue only, same idea
Revenue 2025 = CALCULATE ( [Revenue], Sales[Year] = "2025" )

// Growth between the two years, as a share of 2024
// DIVIDE avoids the divide-by-zero error (it returns blank)
Growth = DIVIDE ( [Revenue 2025] - [Revenue 2024], [Revenue 2024] )
```

Give `Growth` the Percentage format: select the measure, then **Measure tools › Format**: *Percentage*.

### Data preparation pitfalls

- **A year or a code stored as a number**: dragged into **Values**, it would be added up (2024 + 2025 = 4049). Keep it as text, or only place it in **Category**, **Legend (series)** or **Small multiples**.
- **Months sorted alphabetically** (April, August, December…): in the model, sort the month column by a month number column (**Column tools › Sort by column**), then choose **Sort › Sort by**: *Model order*.
- **A blank measure for a category**: the category gets no bar. Check the relationships between tables and the spelling of the keys.
- **A rate or an average** (margin rate, average basket): don't stack it. A stack adds up its segments, and the Top N "Others" bar also computes a sum.

## Step by step: your first Bar Plume chart in 10 minutes

Goal: a stacked column chart of revenue by region, split by channel, with the values and the total of each column.

1. On the report page, click the **Bar Plume** icon in the **Visualizations** pane. A frame appears, with the visual's welcome screen.
2. Drag the `Region` column into **Category**. The regions will be the categories: one bar per region.
3. Drag the `Revenue` measure into **Values**. One bar per region appears, sorted from largest to smallest.
4. In the **Format** pane, **Layout** card: **Orientation** = *Columns (vertical)*. The bars become columns, from left to right.

5. Drag the `Channel` column into **Legend (series)**. Each region now has two columns side by side, *Store* and *Web*, and a legend appears at the top.
6. **Layout** card: **Series** = *Stacked*. The two columns of each region sit on top of each other; the total of each stack shows at its end.
7. **Data labels** card: turn on **Show**. The revenue of each channel is written on its segment, in a color that stays readable on the bar.
8. Still in **Data labels**, **Display units** = *Thousands*, then **Suffix (e.g. €)** = ` €` (a space, then the symbol). The labels show "930K €" instead of "930,000".
9. **Value axis** card: **Display units** = *Thousands*. The axis ticks use the same unit.
10. **Title** card: in **Text**, type "Revenue by region and channel". This title replaces the automatic title.

**Result**: a stacked column chart, identical to Power BI's native visual, but with totals, readable labels and the Plume look. Click a column: the rest of the page filters on that region.

> **Tip:** **Tip**: to get any of the 5 native bar charts, just change **Layout › Series** and **Layout › Orientation** (see the [how-to guide "How do I reproduce a native bar chart?"](/en/tutorials/bar-plume-cas-pratiques)).

## Troubleshooting

| What you see | Likely cause | Fix |
|---|---|---|
| A single bar, or one bar per measure | **Category** is empty | Drag a column into **Category** |
| Power BI won't accept a 2nd measure when **Legend (series)** is filled | Bar Plume version earlier than 1.3 | Install version 1.3, which accepts a Legend and several measures |
| No target marker | **Target** is empty, or the measure returns blank for these categories | Check the measure, the relationships and the spelling of the keys |
| "Others" shows an absurd number | "Others" is the **sum** of the remaining categories | For a rate or an average, turn off **Group the rest into "Others"** |
| Months are sorted by value or alphabetically | **Sort by** = *Value, descending* (default) | **Sort by** = *Model order*, with a sort-by column on the month number; for codes like "M2", "M10", *Category A → Z* with **Natural sort (2 before 10)** |
| **Gap between series (%)** or **Total at the end of stacks** can't be found | These settings only appear for some layouts | Check **Layout › Series** (clustered for the gap, stacked for the totals) |
| The bars scroll instead of showing everything | The bars would be thinner than **Minimum thickness before scrolling (px)** | Lower this setting, or use a Top N ★ |
| Labels on small segments disappear | **Hide overlapping labels** or **Hide below (% of the category)** | Turn off hiding, or turn on **Overflow text** |
| Categories with no data show up again | A measure in the **Dynamic format** field is never blank | Make it return BLANK() when the main measure is blank |
| The "Plume Visuals · Premium preview" watermark appears | A ★ feature is on without a license key | Remove the ★ feature or paste your key (see [the shared basics](/en/tutorials/bien-demarrer-visuels-plume)) |

## Key takeaways

- **Category** places the bars, **Legend (series)** splits each bar by a column, **several measures** compare different calculations; the target goes in **Target**.
- **Layout › Series** and **Orientation** are all you need to recreate Power BI's 5 bar charts.
- **Small multiples** repeats the chart for each value of a field, with a shared axis for a fair comparison.
- **Sort** arranges the bars and the series, down to a custom order (`Web; Store`).
- Target, variance arrows, Top N and analytics are ★: they work without a key, with a watermark.

## Learn more

- [Bar Plume how-to guides](/en/tutorials/bar-plume-cas-pratiques): recipes for common needs.
- [Bar Plume fields and settings](/en/tutorials/bar-plume-champs-et-reglages): every field well and every setting.
- [Getting started with Plume visuals](/en/tutorials/bien-demarrer-visuels-plume): installation, license, styles and shared settings.
- The visual's page: [Bar Plume](/en/visuals/bar-chart). A question? [Support](/en/support).
