Heatmap in Power BI: grid, calendar and hours of the day
Get started with Heatmap Plume: prepare the data, insert the visual, read the colors, write values in the cells, filter by clicking and switch to the calendar.
Lire en françaisIn short
What is a heatmap? A table whose cells are colored by their value: light for small values, dark for large ones. Instead of reading the numbers one by one, you see the peaks, the lows and the seasons at a glance.
A tiny example. The Drinks department makes $120K in March and $280K in August: the March cell is light, the August cell is dark. Eight departments over twelve months, 96 cells, read in a few seconds.
- What the visual does. Heatmap Plume draws three heatmaps: a grid (one row per department, one column per month), a calendar (one day per cell, over one or several years) and a day of week × hour grid computed from a date-time. It writes the values in the cells, colors them with a gradient or classes and sorts. Premium (★): play axis (animation over time), advanced scales (diverging, quantiles, thresholds, square root, logarithmic, per row), percentages and margin totals, similarity clustering, public holidays, annotations, radial heatmap, comparison with a reference and small multiples.
- When to use it. Two crossed dimensions (product × month, region × week), an activity day after day (sales, visits, incidents), peak hours.
- When to prefer something else. A trend over time for a few series: Line Plume. A ranking: Bar Plume. A table that must stay readable number by number: Matrix Plume.
- What you will learn. Prepare a table, insert the visual, read and set the colors, write values in the cells, filter the page by clicking, switch to the calendar.
- What you need: Power BI Desktop, the Heatmap Plume visual installed (see the Plume basics), a table with two category columns and a value. The sample report PlumeHeatmap-Sample-EN, in your "Downloads" space, shows the revenue of 8 departments and a visits calendar (page 1), peak hours, temperatures by year and month and a department ranking (page 2), and the ★ features, including the play axis (page 3).
The data to provide
The shape. One row per cell: the heatmap row (the department), the column (the month) and the value (the revenue). The first two are category columns, the value is a measure.
| Department | Month | Revenue |
|---|---|---|
| Drinks | Jan | 228,000 |
| Drinks | Feb | 205,000 |
| Drinks | Aug | 284,000 |
| Dairy | Jan | 44,000 |
| Dairy | Feb | 48,000 |
| Dairy | Aug | 89,000 |
| Health and beauty | Jan | 264,000 |
| Health and beauty | Feb | 255,000 |
| Health and beauty | Aug | 137,000 |
To try it without your own data, create this table in Modeling › New table:
Sales =
DATATABLE (
"Department", STRING, "Month number", INTEGER, "Month", STRING, "Revenue", DOUBLE,
{
{ "Drinks", 1, "Jan", 228000 }, { "Drinks", 2, "Feb", 205000 }, { "Drinks", 8, "Aug", 284000 },
{ "Dairy", 1, "Jan", 44000 }, { "Dairy", 2, "Feb", 48000 }, { "Dairy", 8, "Aug", 89000 },
{ "Health and beauty", 1, "Jan", 264000 }, { "Health and beauty", 2, "Feb", 255000 }, { "Health and beauty", 8, "Aug", 137000 }
}
)
Then the measure (right-click the Sales table › New measure):
Total revenue =
SUM ( Sales[Revenue] ) -- adds up the revenue of the rows in the cell
Pitfalls.
- Month order. A text column "Jan, Feb" sorts alphabetically. Select the
Monthcolumn, then Column tools › Sort by column › Month number: the visual follows the model order. With a real date column, nothing to do. - A measure, not a column. Drop a measure into Value (color). A numeric column dropped directly is summed by Power BI: often what you want, but an average needs an
AVERAGEmeasure. - Blank cells. A combination without data is hatched and listed as "Blank" in the legend: it is never mistaken for a zero.
Step by step
- In the Visualizations pane, click the Heatmap Plume icon. The visual shows "Add fields to get started".
- Drop
Departmentinto Rows. A column of cells appears, one per department. - Drop
Monthinto Columns. The grid takes shape: one cell per department and month. - Drop the
Total revenuemeasure into Value (color). The cells get colored, from very light blue to dark blue, and the values are written in them. The title becomes "Total revenue by Department and Month". - Read the legend at the top right: the smallest value on the left, the largest on the right. A dark cell = a high value.
- Hover a cell: the tooltip gives the department, the month and the revenue, and the row and column names turn to the accent color.
- Click a cell: the other visuals of the page are filtered to that department that month. Click the name Drinks: the whole row is selected. Click an empty area to clear everything.
- Open Format › Sort and choose Sort rows by › Row total: the strongest department moves to the top.
- Open Format › Color scale and choose Color distribution › Equal classes: five distinct colors, easier to compare, and the legend lists the classes.
- Open Format › Cells and choose Cell shape › Circles: each cell becomes a dot, and the color reads the same way.
And the calendar? Remove Department and Month, then drop a date column (one row per day) into Date: the visual draws a calendar, one day per cell, one strip per year. With a date-time (timestamp), it draws a day of week × hour grid.
Troubleshooting
| What you see | Likely cause | Solution |
|---|---|---|
| "Add fields to get started" | No measure in Value (color) and no date | Drop a measure, or a date column into Date |
| Months out of order | Text column sorted alphabetically | Column tools › Sort by column with the month number, or use a date column |
| Hatched cells | No data for that department that month | It is on purpose: a blank cell is not a zero. Format › Color scale › Empty cells to gray or hide them |
| No value written in the cells | At least one value does not fit: labels are "all or nothing" | Enlarge the visual, reduce Text size, choose Display units › Thousands, or turn off Hide the labels when they do not all fit |
| The grid scrolls instead of showing everything | Too many rows for the height: cells do not shrink below Minimum size before scrolling | Lower this setting in Format › Cells, or keep the first N rows (Format › Sort) |
| All cells have almost the same color | One huge value flattens the others | Format › Color scale › Color distribution › Equal classes, or a fixed Maximum; premium: Ignore extreme values ★ or Scale › Square root ★ |
| A calendar instead of a grid | Only a date is in the fields | Add Rows and Columns, or choose Format › Layout › Type › Grid: rows × columns |
Key takeaways
- One row per cell: Rows, Columns and a measure in Value (color).
- A date alone gives a calendar, a date-time a day × hour grid.
- A blank cell is hatched, never mistaken for a zero.
- Click a cell, a row or a column name: the page is filtered.
- Colors are set in Color scale, palettes in the Style card.
Going further: the use cases (calendar, peak hours, diverging scale ★, sorting, comparison ★, play axis ★) and the fields and settings reference; the Plume basics; the visual's page; a question: support.