Power BI How-To
How to make a Calendar Heatmap in Power BI
Step-by-step guide to building a Calendar Heatmap in Power BI — no code, no marketplace fees. Native Power BI doesn't ship a calendar heatmap; here's the modern way.
Power BI is the dashboarding tool of choice for data teams across finance, operations, and marketing — but its built-in visual library is intentionally narrow. A Calendar Heatmap is one of the visuals it doesn't ship. If you've tried searching the marketplace, you've found a handful of paid alternatives, each with its own formatting opinions, per-seat licensing, and limits on customisation. This guide walks through the modern way to put a Calendar Heatmap into a Power BI report: skip the marketplace, skip the 30-50 hour TypeScript dev cycle, generate the visual from a plain-English description in under five minutes.
By the end of this guide, you will have a working .pbiviz file imported into Power BI Desktop, your data bound to it, and the visual cross-filtering correctly with the rest of your report. Total wall-clock time: under fifteen minutes for someone who has used Power BI before.
Step-by-step
- 1
Decide the data shape your calendar heatmap needs
Identify the columns the chart will actually consume — usually one or two categorical fields, one numeric measure, and (for time-series) a date. Get this right before opening Power BI; refactoring after is more painful than refactoring before.
- 2
Build a small sample model in Power BI Desktop
Open Power BI Desktop. Connect to your source or import a small CSV that matches the shape from step 1. Don't bring in the full dataset — 50-1000 rows is plenty for getting the visual right.
- 3
Generate the visual rather than coding it from scratch
Native Power BI doesn't ship a calendar heatmap, and writing a custom visual in TypeScript + D3.js takes 30-50 hours per visual. Use VizForge: paste a plain-English description of what you want, get a .pbiviz back in under five minutes.
- 4
Import the .pbiviz into Power BI Desktop
In Power BI Desktop, click the three-dot menu in the Visualizations pane → Import a visual from a file → select the .pbiviz. The new visual appears in your visualizations gallery; drag it onto the report canvas like any built-in chart.
- 5
Bind your data fields to the visual
Drop your fields onto the data wells the visual exposes (Category, Value, Series, etc.). The visual updates immediately. If the visualisation looks off, the issue is almost always the field assignment, not the visual itself.
- 6
Configure formatting + cross-filtering
Open the formatting pane. Adjust colours, labels, and tooltips. Confirm the visual cross-filters correctly with other visuals on the page (click a bar — the rest of the report should respond). Save and publish to Power BI Service when ready.
The AI alternative: Skip steps 1-6 above — describe your calendar heatmap in plain English and VizForge generates the .pbiviz in under five minutes. 5 free credits on signup, no card required.
Generate a calendar heatmap on VizForge →When to use a calendar heatmap
- Daily sales or revenue intensity across the year
- Website traffic patterns (day-of-week × week-of-year)
- Support-ticket volume by day
- System incident timeline
- User login frequency / retention calendars
Frequently asked questions
Do I need to know TypeScript or D3.js to follow this guide?
No. The marketplace approach is no-code (you import an existing .pbiviz). The VizForge approach is also no-code — you describe what you want; the AI writes the TypeScript. Knowing TypeScript becomes useful only if you later want to extend the visual yourself, in which case you have the source.
Will the visual work in Power BI Service / Premium / Embedded?
Yes. A .pbiviz is a standard Power BI custom visual — it renders identically across Desktop, Service, Premium, Premium per User, and embedded scenarios. No different from a marketplace visual.
What if I need to change the visual later?
Two paths. (a) Re-prompt with a refinement instruction ("make the bars wider", "use brand colours") and VizForge regenerates a v2 .pbiviz. (b) Open the TypeScript source in VS Code and edit it directly — you own the code.
Can I show multiple years stacked?
Yes. Prompt for 'one row per year' and the visual renders one calendar block per year stacked vertically, with a shared color scale.
What happens on days with no data?
By default rendered as an empty (white) cell. Prompt for 'treat missing as zero' if you want them shaded as the lowest color stop.
Can I overlay holidays?
Yes — bring a Holiday column or flag and the visual outlines those cells with a ring in the formatting pane color.
Does it cross-filter?
Yes — click a cell to filter other visuals to that date; click-drag to select a range.
Other guides for the calendar heatmap
Same visual, different angle — pick the one that matches what you’re trying to do.
Reference
Data shape, DAX measures, related visuals.
Index
100 step-by-step guides across 20 Power BI visual types.
VizForge — AI-generated Power BI custom visuals.