Skip to content

Heatmap

Two dimensions, shaded by value.

Definition · Updated Nov 2, 2026

A heatmap lays out a grid of two dimensions, such as weekday and hour, and shades each cell by its value, so busy and quiet patches show at once. Use it for transactions by hour, tickets by team and day, or any count across two axes.

Pay once. Every update included.

Live preview

Card transactions by hourCard transactions this week by weekday and 2-hour slot, as a share of the busiest slot: Friday 18:00 with 412 transactions, then Friday 16:00 with 398; the quietest slots are 00:00 to 04:00.MONTUEWEDTHUFRI398412SATSUN00:0006:0012:0022:00LOWHIGH
Card transactions by hour
Day00:0002:0004:0006:0008:0010:0012:0014:0016:0018:0020:0022:00
Mon4%3%9%30%49%63%70%72%91%62%37%14%
Tue4%3%9%32%53%63%78%70%83%61%37%15%
Wed5%3%9%31%54%69%72%80%91%62%40%14%
Thu5%3%10%33%57%74%83%79%94%63%39%14%
Fri5%3%10%37%54%78%72%82%97%100%43%14%
Sat4%2%7%24%38%56%59%63%70%52%29%10%
Sun2%1%4%15%30%35%41%42%48%32%21%7%

Sample data: card transactions by weekday and hour over 7 days, the busiest cells at 398 and 412

Size
Legend
Data shape
A value per cell of two dimensions
Good for
Activity by day and hour, counts by two axes
Avoid when
Readers need exact values in every cell
Sizes
XS, S, M and L, re-laid out from the data

Anatomy

Inspect it like the Figma file.

The same layers, names and tokens as the component. Select one to read its size, fill and style.

Layers

024 / Heatmap

chart/024-heatmap
plot · heatmap
Layer
cell mon · 06
Type
Rectangle
Size
56 × 31
Fill
data/seq-2
Radius
3
Group
Marks · 84

Layers

024 / Heatmap

chart/024-heatmap
plot · heatmap
Layer
cell mon · 06
Type
Rectangle
Size
16 × 15
Fill
data/seq-2
Radius
3
Group
Marks · 84

Sizes

Re-laid out, never scaled.

The same data at XS, S, M and L. Every size is redrawn from the data, so text and line weights never shrink.

M against S

Width360 px480 px

Plot328 px440 px

Labels1414

Marks8484

Height212 px246 px

Same tokens at every size: text styles, 1 px lines and mark radius stay put.

When to use

Patterns across two axes.

Three signs it fits, and three signs another type fits better.

Are there two dimensions?

One value per day.

Yes: Keep the heatmap

Is the grid rectangular?

Hours around a clock.

Yes: Keep the heatmap

Is shading enough?

Sized dots per cell.

Yes: Keep the heatmap

Code and Figma

One name in Figma and in code.

Every Figma property is a prop with the same name and values. One command installs it.

Figma

chart/024-heatmap

size
legend
Property = propValuesDefault
size"xs" · "s" · "m" · "l""xs"
legendtrue · falsetrue
color"cat-1" · "cat-2" · "cat-3" · "cat-4""cat-1"
npx shadcn add @chartory/heatmap
heatmap.tsx
import { Heatmap } from "@/components/chartory/heatmap"import { cardTransactions } from "./card-transactions"export function CardTransactions() {  return (    <Heatmap      data={cardTransactions}      size="m"      legend={true}    />  )}

Hearth widget

Heatmap as a widget.

The chart in a Hearth card with a hero number and two blocks. One token set, light and dark.

Code
Get the code

EmberPreset

ChartoryDefault preset

Pick the blocks, the size and the preset for your own widget.

Read the Hearth widget docs

FAQ

Heatmap questions.

What people ask before they put a heatmap in a dashboard.

Something else?

hello@usechartory.com
  • Only the peaks (398 and 412 in the sample). The rest read by shade, from low to high as the legend shows.

Related types

The same question, a different shape of answer. Every type ships in Figma and in code.

Same family

Space and place

9 types in Chartory answer this question.