# Heatmap Plume: calendar, peak hours and 8 more recipes

> Heatmap Plume use cases: multi-year calendar, day × hour, classes, sorting, and premium diverging scale, totals, comparison with last year, public holidays and animation.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/heatmap-plume-cas-pratiques
- Published: 2026-10-21
- Visual: Heatmap Plume, technical reference: https://plumevisuals.com/ai/visuals/heatmap.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).

These recipes start from the `Sales` table and the `Total revenue` measure of the [getting started guide](/en/tutorials/heatmap-plume-prise-en-main). The sample report **PlumeHeatmap-Sample-EN** shows them all.

## How do I draw a calendar over one or several years?

You follow an activity day after day (visits, sales, incidents) and want to see the seasons and the busy days.

1. Have a table with a **date** column (one row per day, or several rows per day) and a measure, for example `Visitor count = SUM ( Attendance[Visitors] )` (a measure cannot have the name of a column of its own table).
2. Drop the date column into **Date** and the measure into **Value (color)**. Leave **Rows** and **Columns** empty.
3. The visual draws one strip per year: weeks as columns, days as rows, a space between months.
4. For a small calendar per month, with the day numbers: **Format › Calendar and hours › Layout › One block per month**, then **Format › Data labels › Content › Day number (calendar)**.
5. To start the week on Sunday: **First day of the week › Sunday**.

Result: days without data are grayed ("Blank" in the legend); clicking a month name selects the whole month, clicking "Mon" selects every Monday.

> **Tip:** No need to replace the date hierarchy with the date: Heatmap Plume rebuilds the date from the year, month and day.

## How do I see peak hours (day of week × hour)?

A customer service team wants to know when calls come in.

1. Have a **date-time** column (one timestamp per call or per hour) and a `Calls` measure.
2. Drop the date-time into **Date** and the measure into **Value (color)**.
3. The visual computes the day of the week and the hour itself: 7 rows (in the order of the first day of the week) and 24 columns.
4. For an average per hour rather than a sum over the whole period: **Format › Layout › Several values in a cell › Average**.
5. For business hours only: **Format › Calendar and hours › First hour** = 7, **Last hour** = 20.

Result: no "Hour number" or "Weekday" column to create in DAX; the tooltip also gives the number of rows in each cell.

## How do I color a difference around zero (diverging scale) ★?

An anomaly, a positive or negative margin: zero must be neutral, blue and red must face each other.

1. **Format › Color scale › Gradient › Diverging: two hues and a midpoint ★**.
2. **Scale midpoint › Zero** (or **Average**, **Median**, **Fixed value** and **Midpoint value** = 100 for an index).
3. For other colors: **Style › Custom colors › Gradient palette**, or **Gradient: start**, **Gradient: middle (diverging)** and **Gradient: end**.

Result: the scale is symmetric around the midpoint; a mark shows the midpoint in the legend.

## How do I compare easily: classes instead of a gradient?

A continuous gradient makes two neighboring cells hard to tell apart.

1. **Format › Color scale › Color distribution › Equal classes**, **Number of classes** = 5.
2. Click a class in the legend: only its cells stay sharp. Click it again to go back.
3. ★ **Quantiles**: each class has the same number of cells (useful when values are very uneven). ★ **Custom thresholds**: type your bounds, for example `100000; 200000`.
4. To pick the color of each class yourself, like the "Rules" of Power BI conditional formatting: **Class colors (empty = gradient)** = `#C0392B; #F5B041; #F4F6F7; #7FB3D5; #1F618D` (from the lowest class to the highest; missing colors come from the gradient).

## How do I sort rows and keep the most important ones?

1. **Format › Sort › Sort rows by › Row total**: the department with the largest revenue on top.
2. **Value in a column** and **Column name** = `Aug`: the strongest departments in August on top.
3. **Show the first N rows** = 5: only the 5 departments with the largest total remain.
4. ★ **Similarity (clustering)**: departments with the same seasonality are placed side by side, with their tree (dendrogram) on the left.

## How do I show row and column totals ★?

1. **Format › Margin totals ★ › Row totals (right) › Values ★** and **Column totals › Values ★**.
2. **Calculation**: sum, average, maximum or minimum of the cells.
3. ★ **Bars** or **Bars and values**: one bar per row and per column, which keeps its scale during the animation.
4. ★ For shares rather than totals: **Format › Data labels › Content › % of row ★**, **% of column ★** or **% of total ★**.

## How do I compare each cell with last year ★?

1. Create the reference measure, for example `Revenue LY = CALCULATE ( [Total revenue], SAMEPERIODLASTYEAR ( Dates[Date] ) )` (date table marked as such).
2. Drop it into **Reference ★**.
3. The cells take the color of the difference: green = favorable, red = unfavorable (style colors), with ▲ / ▼ in the labels.
4. **Format › Comparison ★ › Color by › Difference in % of the reference**; for costs, **A decrease is favorable**.

## How do I mark public holidays and events ★?

1. Calendar: **Format › Calendar and hours › Public holidays** (France, Belgium, Switzerland, Canada, Germany, United Kingdom, United States). Holidays are outlined and named in the tooltip.
2. Events: a text measure in **Annotation ★**, for example `Event of the day = SELECTEDVALUE ( Attendance[Event] )`. A marker appears in the cell, the text is in the tooltip; **Format › Annotations ★ › Marker**: cell corner, dot or outline.

## How do I animate the heatmap over time ★?

1. Drop a year (or a date) into **Play axis ★**.
2. Click ▶ under the chart: the cells change color from one year to the next, with a transition.
3. **Format › Playback ★ › Same scale for every frame** (on by default): a color keeps the same meaning from one year to the next.
4. With monthly dates in **Date** and a year in **Play axis ★**, the columns are the 12 months of the year: every frame fills the same columns.

## How do I make a radial heatmap of the 24 hours ★?

1. Start from the day × hour grid (the "peak hours" recipe).
2. **Format › Layout › Shape › Radial (columns around a circle)**: the hours go around the dial, one ring per day.
3. **Center hole**: size of the empty circle in the middle.
