Change over time

Calendar heatmap

Colours calendar units by their associated values.

  • Chart
  • Trend over time
  • Seasonality

What it answers

Which calendar dates have unusually high or low values?

Shape
Calendar grid of coloured cells
What it shows
Weekday patterns, gaps and bursts.

Example

The question

Which days in the first quarter had unusually many orders?

Orders per day, January to March 2025 (calendar heatmap)

Orders per day, January to March 2025 (calendar heatmap)One square per day, darker purple to pink means more orders. Fridays and Saturdays are busier; mid-February (sale weekend) and one Monday in late March stand out.MonTueWedThuFriSatSunJanFebMarFewerMore
Orders per day, January to March 2025 (calendar heatmap)One square per day, darker purple to pink means more orders. Fridays and Saturdays are busier; mid-February (sale weekend) and one Monday in late March stand out.MonWedFriSunJanFebMarFewerMore
One square per day, darker purple to pink means more orders. Fridays and Saturdays are busier; mid-February (sale weekend) and one Monday in late March stand out.

Illustrative data. It belongs to no company.

When to use it

Use it when

Daily activity, attendance or operational patterns.

Avoid it when

When exact values or month-to-month totals are the main task.

How to read it

Locate dates by weekday/week layout and compare cell colours with the legend.

Note

Aggregate to one value per displayed calendar unit.

The data you need

Layout
Long table
Fields
Date: date; Value: number
One row is
One day and its aggregated value. What is the grain?
Rules
Use real calendar dates and one aggregate per day. Preserve missing dates separately from zero.
Optional
Optional Series. Use regular spacing for methods requiring it.
Preparation
Aggregate to one value per calendar day/unit and build the calendar layout; keep missing dates distinct fromzero.
Units
Time uses a stated date/time unit and sampling period; the value axis uses the measure's unit. Rates need their own explicit denominator.
Example of the input layout: Long tableA long table: one row per observation, few columns. New data adds rows.DateValueAABBC
A long table: one row per observation, few columns. New data adds rows.

Worked example

Data Jan 1=30, Jan 2=34, Jan 3=38. Colour those dates. Jan 3 has the highest value; unobserved days remain missing.

DateValue
2026-01-0130
2026-01-0234
2026-01-0338