# Calendar heatmap (Heatmap example)

> WestCoast Charts 1.1.5, release, public Core release, on npm. HTML: https://westcoast-charts.com/gallery/heatmap/calendar-heatmap/ · Index for agents: https://westcoast-charts.com/llms.txt

A year of daily commits in a contribution calendar.

Why it matters: dedicated calendar type: real week/month layout, month labels, weekday rows, colour ranges, nulls distinct from zero

- Chart type: `calendar` (Calendar)
- Collection: Heatmap · Heatmap
- Raw configuration: https://westcoast-charts.com/gallery-src/heatmap/calendar-heatmap.js
- Standalone example: https://westcoast-charts.com/embed/samples/wcc/gallery/heatmap/calendar-heatmap.html

## Setup

```js
import WestCoastCharts from 'west-coast-charts'
import types from 'west-coast-charts/types'

WestCoastCharts.use(types)
```

## Options

```js
const options = {
  chart: {
    height: 260,
    fontFamily: "Inter, Geist, \"IBM Plex Sans\", system-ui, sans-serif",
    type: "calendar",
    toolbar: {
      show: false
    }
  },
  series: [
    {
      name: "Commits",
      data: [
        {
          x: "2025-01-01",
          y: 6
        },
        {
          x: "2025-01-02",
          y: 2
        },
        {
          x: "2025-01-03",
          y: 1
        },
        {
          x: "2025-01-04",
          y: 1
        },
        {
          x: "2025-01-06",
          y: 4
        },
        {
          x: "2025-01-07",
          y: 1
        },
        {
          x: "2025-01-08",
          y: 1
        },
        {
          x: "2025-01-10",
          y: 3
        },
        {
          x: "2025-01-12",
          y: 2
        },
        {
          x: "2025-01-14",
          y: 1
        },
        {
          x: "2025-01-15",
          y: 3
        },
        {
          x: "2025-01-17",
          y: 2
        },
        {
          x: "2025-01-18",
          y: 1
        },
        {
          x: "2025-01-20",
          y: 0
        },
        {
          x: "2025-01-21",
          y: 3
        },
        {
          x: "2025-01-22",
          y: 4
        },
        {
          x: "2025-01-23",
          y: 4
        },
        {
          x: "2025-01-24",
          y: 0
        },
        {
          x: "2025-01-27",
          y: 12
        },
        {
          x: "2025-01-28",
          y: 5
        },
        {
          x: "2025-01-29",
          y: 7
        },
        {
          x: "2025-01-30",
          y: 1
        },
        {
          x: "2025-01-31",
          y: 1
        },
        {
          x: "2025-02-03",
          y: 5
        },
        {
          x: "2025-02-04",
          y: 1
        },
        {
          x: "2025-02-05",
          y: 8
        },
        {
          x: "2025-02-06",
          y: 10
        },
        {
          x: "2025-02-07",
          y: 7
        },
        {
          x: "2025-02-10",
          y: 0
        },
        {
          x: "2025-02-11",
          y: 2
        },
        {
          x: "2025-02-12",
          y: 4
        },
        {
          x: "2025-02-14",
          y: 1
        },
        {
          x: "2025-02-15",
          y: 1
        },
        {
          x: "2025-02-16",
          y: 3
        },
        {
          x: "2025-02-17",
          y: 4
        },
        {
          x: "2025-02-18",
          y: 3
        },
        {
          x: "2025-02-19",
          y: 6
        },
        {
          x: "2025-02-21",
          y: 7
        },
        {
          x: "2025-02-25",
          y: 2
        },
        {
          x: "2025-02-26",
          y: 1
        },
        {
          x: "2025-02-27",
          y: 1
        },
        {
          x: "2025-02-28",
          y: 0
        },
        {
          x: "2025-03-06",
          y: 9
        },
        {
          x: "2025-03-07",
          y: 0
        },
        {
          x: "2025-03-10",
          y: 0
        },
        {
          x: "2025-03-11",
          y: 3
        },
        {
          x: "2025-03-12",
          y: 1
        },
        {
          x: "2025-03-13",
          y: 6
        },
        {
          x: "2025-03-14",
          y: 6
        },
        {
          x: "2025-03-17",
          y: 0
        },
        {
          x: "2025-03-18",
          y: 3
        },
        {
          x: "2025-03-19",
          y: 6
        },
        {
          x: "2025-03-20",
          y: 2
        },
        {
          x: "2025-03-21",
          y: 4
        },
        {
          x: "2025-03-24",
          y: 4
        },
        {
          x: "2025-03-26",
          y: 5
        },
        {
          x: "2025-03-27",
          y: 0
        },
        {
          x: "2025-03-28",
          y: 5
        },
        {
          x: "2025-03-30",
          y: 2
        },
        {
          x: "2025-03-31",
          y: 3
        },
        {
          x: "2025-04-01",
          y: 2
        },
        {
          x: "2025-04-02",
          y: 10
        },
        {
          x: "2025-04-03",
          y: 2
        },
        {
          x: "2025-04-07",
          y: 3
        },
        {
          x: "2025-04-08",
          y: 2
        },
        {
          x: "2025-04-09",
          y: 0
        },
        {
          x: "2025-04-10",
          y: 0
        },
        {
          x: "2025-04-11",
          y: 4
        },
        {
          x: "2025-04-12",
          y: 1
        },
        {
          x: "2025-04-14",
          y: 4
        },
        {
          x: "2025-04-15",
          y: 2
        },
        {
          x: "2025-04-16",
          y: 1
        },
        {
          x: "2025-04-17",
          y: 13
        },
        {
          x: "2025-04-18",
          y: 6
        },
        {
          x: "2025-04-19",
          y: 3
        },
        {
          x: "2025-04-21",
          y: 1
        },
        {
          x: "2025-04-22",
          y: 4
        },
        {
          x: "2025-04-23",
          y: 1
        },
        {
          x: "2025-04-27",
          y: 0
        },
        {
          x: "2025-04-28",
          y: 1
        },
        {
          x: "2025-04-29",
          y: 0
        },
        {
          x: "2025-04-30",
          y: 1
        },
        {
          x: "2025-05-01",
          y: 4
        },
        {
          x: "2025-05-02",
          y: 3
        },
        {
          x: "2025-05-03",
          y: 2
        },
        {
          x: "2025-05-05",
          y: 5
        },
        {
          x: "2025-05-06",
          y: 1
        },
        {
          x: "2025-05-07",
          y: 1
        },
        {
          x: "2025-05-09",
          y: 1
        },
        {
          x: "2025-05-11",
          y: 3
        },
        {
          x: "2025-05-12",
          y: 3
        },
        {
          x: "2025-05-13",
          y: 6
        },
        {
          x: "2025-05-14",
          y: 7
        },
        {
          x: "2025-05-15",
          y: 6
        },
        {
          x: "2025-05-16",
          y: 2
        },
        {
          x: "2025-05-17",
          y: 3
        },
        {
          x: "2025-05-18",
          y: 5
        },
        {
          x: "2025-05-19",
          y: 0
        },
        {
          x: "2025-05-21",
          y: 7
        },
        {
          x: "2025-05-22",
          y: 8
        },
        {
          x: "2025-05-25",
          y: 2
        },
        {
          x: "2025-05-26",
          y: 0
        },
        {
          x: "2025-05-27",
          y: 0
        },
        {
          x: "2025-05-28",
          y: 6
        },
        {
          x: "2025-05-30",
          y: 3
        },
        {
          x: "2025-06-01",
          y: 2
        },
        {
          x: "2025-06-02",
          y: 1
        },
        {
          x: "2025-06-03",
          y: 5
        },
        {
          x: "2025-06-04",
          y: 5
        },
        {
          x: "2025-06-05",
          y: 7
        },
        {
          x: "2025-06-07",
          y: 1
        },
        {
          x: "2025-06-09",
          y: 1
        },
        {
          x: "2025-06-12",
          y: 11
        },
        {
          x: "2025-06-13",
          y: 3
        },
        {
          x: "2025-06-14",
          y: 3
        },
        {
          x: "2025-06-15",
          y: 0
        },
        {
          x: "2025-06-16",
          y: 7
        },
        {
          x: "2025-06-17",
          y: 6
        },
        {
          x: "2025-06-18",
          y: 0
        },
        {
          x: "2025-06-19",
          y: 8
        },
        {
          x: "2025-06-21",
          y: 1
        },
        {
          x: "2025-06-22",
          y: 3
        },
        {
          x: "2025-06-23",
          y: 6
        },
        {
          x: "2025-06-24",
          y: 2
        },
        {
          x: "2025-06-25",
          y: 2
        },
        {
          x: "2025-06-26",
          y: 0
        },
        {
          x: "2025-06-27",
          y: 0
        },
        {
          x: "2025-06-28",
          y: 0
        },
        {
          x: "2025-06-30",
          y: 0
        },
        {
          x: "2025-07-01",
          y: 9
        },
        {
          x: "2025-07-02",
          y: 1
        },
        {
          x: "2025-07-03",
          y: 10
        },
        {
          x: "2025-07-04",
          y: 1
        },
        {
          x: "2025-07-05",
          y: 3
        },
        {
          x: "2025-07-07",
          y: 3
        },
        {
          x: "2025-07-08",
          y: 4
        },
        {
          x: "2025-07-09",
          y: 0
        },
        {
          x: "2025-07-10",
          y: 0
        },
        {
          x: "2025-07-11",
          y: 6
        },
        {
          x: "2025-07-13",
          y: 2
        },
        {
          x: "2025-07-15",
          y: 6
        },
        {
          x: "2025-07-18",
          y: 4
        },
        {
          x: "2025-07-19",
          y: 0
        },
        {
          x: "2025-07-21",
          y: 6
        },
        {
          x: "2025-07-22",
          y: 2
        },
        {
          x: "2025-07-23",
          y: 1
        },
        {
          x: "2025-07-24",
          y: 2
        },
        {
          x: "2025-07-25",
          y: 2
        },
        {
          x: "2025-07-27",
          y: 0
        },
        {
          x: "2025-07-28",
          y: 4
        },
        {
          x: "2025-07-30",
          y: 1
        },
        {
          x: "2025-07-31",
          y: 2
        },
        {
          x: "2025-08-03",
          y: 1
        },
        {
          x: "2025-08-04",
          y: 2
        },
        {
          x: "2025-08-05",
          y: 4
        },
        {
          x: "2025-08-07",
          y: 12
        },
        {
          x: "2025-08-08",
          y: 2
        },
        {
          x: "2025-08-09",
          y: 0
        },
        {
          x: "2025-08-12",
          y: 2
        },
        {
          x: "2025-08-13",
          y: 2
        },
        {
          x: "2025-08-14",
          y: 1
        },
        {
          x: "2025-08-15",
          y: 2
        },
        {
          x: "2025-08-18",
          y: 0
        },
        {
          x: "2025-08-19",
          y: 1
        },
        {
          x: "2025-08-20",
          y: 6
        },
        {
          x: "2025-08-21",
          y: 8
        },
        {
          x: "2025-08-22",
          y: 3
        },
        {
          x: "2025-08-24",
          y: 5
        },
        {
          x: "2025-08-25",
          y: 2
        },
        {
          x: "2025-08-27",
          y: 7
        },
        {
          x: "2025-08-28",
          y: 2
        },
        {
          x: "2025-08-30",
          y: 2
        },
        {
          x: "2025-09-01",
          y: 1
        },
        {
          x: "2025-09-02",
          y: 5
        },
        {
          x: "2025-09-03",
          y: 5
        },
        {
          x: "2025-09-04",
          y: 9
        },
        {
          x: "2025-09-05",
          y: 8
        },
        {
          x: "2025-09-06",
          y: 1
        },
        {
          x: "2025-09-07",
          y: 2
        },
        {
          x: "2025-09-08",
          y: 2
        },
        {
          x: "2025-09-09",
          y: 1
        },
        {
          x: "2025-09-11",
          y: 4
        },
        {
          x: "2025-09-13",
          y: 1
        },
        {
          x: "2025-09-15",
          y: 2
        },
        {
          x: "2025-09-16",
          y: 9
        },
        {
          x: "2025-09-17",
          y: 1
        },
        {
          x: "2025-09-18",
          y: 2
        },
        {
          x: "2025-09-19",
          y: 3
        },
        {
          x: "2025-09-22",
          y: 4
        },
        {
          x: "2025-09-24",
          y: 1
        },
        {
          x: "2025-09-25",
          y: 12
        },
        {
          x: "2025-09-26",
          y: 0
        },
        {
          x: "2025-09-27",
          y: 1
        },
        {
          x: "2025-09-28",
          y: 1
        },
        {
          x: "2025-09-29",
          y: 1
        },
        {
          x: "2025-09-30",
          y: 4
        },
        {
          x: "2025-10-01",
          y: 6
        },
        {
          x: "2025-10-02",
          y: 3
        },
        {
          x: "2025-10-03",
          y: 0
        },
        {
          x: "2025-10-06",
          y: 4
        },
        {
          x: "2025-10-07",
          y: 9
        },
        {
          x: "2025-10-08",
          y: 1
        },
        {
          x: "2025-10-09",
          y: 7
        },
        {
          x: "2025-10-10",
          y: 0
        },
        {
          x: "2025-10-11",
          y: 0
        },
        {
          x: "2025-10-13",
          y: 5
        },
        {
          x: "2025-10-14",
          y: 3
        },
        {
          x: "2025-10-15",
          y: 0
        },
        {
          x: "2025-10-16",
          y: 1
        },
        {
          x: "2025-10-17",
          y: 3
        },
        {
          x: "2025-10-19",
          y: 0
        },
        {
          x: "2025-10-21",
          y: 3
        },
        {
          x: "2025-10-22",
          y: 8
        },
        {
          x: "2025-10-23",
          y: 3
        },
        {
          x: "2025-10-24",
          y: 5
        },
        {
          x: "2025-10-26",
          y: 4
        },
        {
          x: "2025-10-27",
          y: 1
        },
        {
          x: "2025-10-28",
          y: 6
        },
        {
          x: "2025-10-30",
          y: 3
        },
        {
          x: "2025-10-31",
          y: 5
        },
        {
          x: "2025-11-03",
          y: 2
        },
        {
          x: "2025-11-04",
          y: 9
        },
        {
          x: "2025-11-05",
          y: 8
        },
        {
          x: "2025-11-06",
          y: 2
        },
        {
          x: "2025-11-07",
          y: 1
        },
        {
          x: "2025-11-09",
          y: 1
        },
        {
          x: "2025-11-12",
          y: 1
        },
        {
          x: "2025-11-13",
          y: 7
        },
        {
          x: "2025-11-14",
          y: 3
        },
        {
          x: "2025-11-17",
          y: 2
        },
        {
          x: "2025-11-18",
          y: 4
        },
        {
          x: "2025-11-19",
          y: 5
        },
        {
          x: "2025-11-20",
          y: 0
        },
        {
          x: "2025-11-23",
          y: 1
        },
        {
          x: "2025-11-24",
          y: 0
        },
        {
          x: "2025-11-25",
          y: 7
        },
        {
          x: "2025-11-26",
          y: 6
        },
        {
          x: "2025-11-27",
          y: 5
        },
        {
          x: "2025-11-28",
          y: 8
        },
        {
          x: "2025-11-29",
          y: 2
        },
        {
          x: "2025-12-01",
          y: 5
        },
        {
          x: "2025-12-03",
          y: 1
        },
        {
          x: "2025-12-04",
          y: 6
        },
        {
          x: "2025-12-05",
          y: 1
        },
        {
          x: "2025-12-06",
          y: 0
        },
        {
          x: "2025-12-08",
          y: 2
        },
        {
          x: "2025-12-09",
          y: 7
        },
        {
          x: "2025-12-10",
          y: 0
        },
        {
          x: "2025-12-12",
          y: 8
        },
        {
          x: "2025-12-13",
          y: 1
        },
        {
          x: "2025-12-14",
          y: 0
        },
        {
          x: "2025-12-15",
          y: 1
        },
        {
          x: "2025-12-16",
          y: 1
        },
        {
          x: "2025-12-17",
          y: 1
        },
        {
          x: "2025-12-18",
          y: 4
        },
        {
          x: "2025-12-19",
          y: 1
        },
        {
          x: "2025-12-23",
          y: 1
        },
        {
          x: "2025-12-26",
          y: 2
        },
        {
          x: "2025-12-29",
          y: 2
        },
        {
          x: "2025-12-31",
          y: 0
        }
      ]
    }
  ],
  colors: ["#16a34a"],
  plotOptions: {
    calendar: {
      start: "2025-01-01",
      end: "2025-12-31"
    }
  },
  title: {
    text: "Commits per day, 2025"
  },
  theme: {
    mode: "light",
    preset: "coastal"
  }
}

const chart = new WestCoastCharts(document.querySelector('#chart'), options)
await chart.render()
```

## Verify

- Text check (Library 1.1.5): load `west-coast-charts/agent/describe` and call `chart.describe({ format: "json" })` for the actual drawn state. The live reader is on this example’s HTML page.
- Command line (Public agent tools 0.2.3, tested with Library 1.1.5; available from the versioned GitHub release and npm, https://westcoast-charts.com/docs/cli/index.md): `wcc chart export heatmap-calendar-heatmap.json --out heatmap-calendar-heatmap.svg --with-table` (save the options above as JSON first)
