# A 100-cell waffle chart with your own shapes in Power BI

> Getting started with Waffle Plume: show a percentage as 100 cells, share one waffle between several categories, pick the cell shape and read the result.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/waffle-plume-prise-en-main
- Published: 2026-10-21
- Visual: Waffle Plume, technical reference: https://plumevisuals.com/ai/visuals/waffle.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 waffle chart?** It is a grid of small cells, usually 10 by 10. Each cell is worth 1%: a 43% rate colors 43 cells out of 100. The eye counts cells far more easily than it compares the angles of a pie chart, and a waffle speaks to everyone, meetings included.

Mini example. Out of 528 customers surveyed, 446 received their order on time: 446 ÷ 528 = 84%. The waffle colors 84 cells; the 16 light cells are the late deliveries.

- **What the visual does.** Waffle Plume has two free modes: *Percentage* (one waffle per category, the percentage written in large type) and *Parts of a whole* (every category shares one waffle); the *Units ★* mode (one row of pictograms per category, 1 cell = N units) is premium. Cells can be squares, circles, hearts, people, houses… and a different shape for each category.
- **When to use it.** For a rate (satisfaction, progress, target coverage), a split into a few parts (sales channels, contract types) or a telling headcount ("one person = 10 employees").
- **When to prefer something else.** To compare more than 8 to 10 categories precisely: Bar Plume. To follow a value over time: Line Plume (Waffle Plume can also replay the waffle year by year with the **Play axis ★** field). For a hierarchy with several levels: Sunburst Plume.
- **What you will be able to do.** Prepare the data, show a percentage, share the waffle between categories, change the cell shape and the fill order, filter the page.
- **What you need:** Power BI Desktop, the Waffle Plume visual installed (see [the shared basics](/en/tutorials/bien-demarrer-visuels-plume)), a measure (a rate, or an amount). The **PlumeWaffle-Sample-EN** sample report, in your ["Downloads"](/en/account/downloads) area, shows the Percentage and Parts modes (page 1), use cases (page 2), the ★ features (page 3) and the year-by-year change ★ (page 4).

## The data to provide

**The shape.** One row per category (or per category and year combination), with an amount. The category is a **column**; the amount goes through a **measure** (a DAX formula that adds up), so that Power BI computes each part correctly.

| Channel | Amount |
|---|---|
| Store | 420,000 |
| Web | 310,000 |
| Phone | 120,000 |
| Marketplace | 90,000 |
| Trade shows | 60,000 |

To try it without a file: **Modeling › New table**, then paste:

```dax
Sales =
DATATABLE (
    "Channel", STRING, "Amount", DOUBLE,
    {
        { "Store", 420000 },
        { "Web", 310000 },
        { "Phone", 120000 },
        { "Marketplace", 90000 },
        { "Trade shows", 60000 }
    }
)
```

Then the measures (**Modeling › New measure**):

```dax
Revenue =
SUM ( Sales[Amount] )                            -- the amount of each channel

Web share =
DIVIDE (
    CALCULATE ( [Revenue], Sales[Channel] = "Web" ),  -- Web revenue
    CALCULATE ( [Revenue], ALL ( Sales[Channel] ) )   -- divided by the revenue of every channel
)
```

Format `Revenue` as a currency and `Web share` as a percentage (**Measure tools › Format**: Percentage).

**Pitfalls.**
- A **rate** goes as is in **Value**: a measure formatted as a percentage (0.31) fills 31 cells. An **amount** needs a denominator: drop it in **Total (100%)**, or add a category to get parts.
- A **negative** value cannot fill a cell: it counts as zero and a warning icon appears.
- Without a measure in **Value**, the visual counts the rows of each category.

## Step by step

1. Insert **Waffle Plume** from the **Visualizations** pane. The visual shows "Add fields to get started".
2. Drop the `Web share` measure in **Value**. A 10 × 10 waffle appears: 31 colored cells, "31%" in large type on the left, with the measure name. The cells appear one by one, in fill order.
3. Hover a colored cell: the tooltip gives the value, the percentage and "31 of 100".
4. Create a second Waffle Plume visual. Drop `Channel` in **Category** and `Revenue` in **Value**. The visual switches to *Parts of a whole*: the five channels share the 100 cells, from largest to smallest, and the legend reads "Store · 42%", "Web · 31%"…
5. Click a Web cell: the page is filtered on that channel and the other channels step back. **Ctrl + click** adds a channel, a click in the empty space clears the selection. The legend can be clicked too.
6. Open **Format › Cells › Cell shape** and pick *Basic · Circle*: every cell becomes a dot. Try *People · Person* or *Objects and buildings · House*: these shapes are free.
7. Open **Format › Data colors**. Under each channel, a color and a shape: give Web the *Nature and weather · Cloud* shape and another color. Each channel can have its own shape.
8. In **Format › Layout › Waffle**, set **Fill order** to *Column by column, from the bottom*: the waffle fills like a stacked bar. Try **Rows** = 5 and **Columns** = 20 for a strip.
9. Set **Layout › Waffle › Mode** to *Percentage: one waffle per category*. Each channel gets its own waffle, with its percentage written in large type; **Layout › Categories and waffles › Waffles per row** sets how many waffles sit side by side.
10. Save. In the published report, readers filter the page with a click, with the keyboard too (arrows, Enter, Escape).

## Troubleshooting

| What you see | Likely cause | Fix |
|---|---|---|
| "Add fields to get started" | Nothing in **Value** or **Category** | Drop a measure in **Value** |
| The waffle is full (100%) with an amount | An amount without a denominator is read as "the largest value = 100%" | Add the denominator in **Total (100%)**, or a **Category** for parts |
| The percentage is not the expected one | The automatic rule does not fit your data | **Layout › Percentage computed**: *Value is a ratio*, *Value in points* or *Share of the sum of the categories* |
| Warning icon "Negative values counted as zero" | Negative amounts (credits, returns) | Filter them out or use a measure that excludes them |
| A channel is called "Others" | More than 10 categories | **Layout › Categories and waffles › Categories at most** |
| The shapes are tiny | A very wide shape (car, truck) in a square cell | Use fewer **Rows** and **Columns**, or a more compact shape |
| "Premium preview" watermark | A ★ feature is used without a key (play axis, Units mode, snake order, ★ shape, SVG, partly filled last cell, target, small multiples) | Go back to the free setting or enter your key in **Format › Plume Studio License** |

## Key points

- A rate in **Value**: a 100-cell waffle; an amount: add **Total (100%)** or a **Category**.
- With a **Category**, the parts share one waffle; the total is always 100 cells (largest remainder method).
- 22 free shapes, and a different shape per category in **Data colors**.
- Four free fill orders (plus two ★ snake orders) and a grid of 1 to 50 rows and columns.
- A year in **Play axis ★**: ▶ replays the waffle, cells fill or empty from one year to the next (watermark without a key).

## Going further

- [Use cases](/en/tutorials/waffle-plume-cas-pratiques): pictograms, target, SVG, small multiples, year by year.
- [Fields and settings](/en/tutorials/waffle-plume-champs-et-reglages): every setting of the Format pane.
- [Getting started with Plume visuals](/en/tutorials/bien-demarrer-visuels-plume): installation, license, styles, dynamic formatting.
- The visual page: [Waffle Plume](/en/visuals/waffle). A question: [support](/en/support).
