Heatmap
Colours a category-by-category (or time-by-category) grid by a numeric value, using a sequential or diverging scale.
- Use when
- Finding patterns across two dimensions at once: hour by weekday, cohort by month, product by region. Good when there are too many series for lines or bars and the overall pattern matters more than exact values.
- Avoid when
- Precise comparison of a few values (use bar chart); a single series over time (use line chart); a daily value across a year (use calendar heatmap).
Preview
Orders peak at 70 per hour at 12pm on Wednesdays
Average orders per hour by weekday and time of day
import { Heatmap } from "insightcharts";
const data = [
{ day: "Mon", slot: "6am", orders: 12 },
{ day: "Mon", slot: "9am", orders: 48 },
{ day: "Mon", slot: "12pm", orders: 61 },
{ day: "Mon", slot: "3pm", orders: 55 },
{ day: "Mon", slot: "6pm", orders: 38 },
{ day: "Mon", slot: "9pm", orders: 14 },
{ day: "Tue", slot: "6am", orders: 11 },
{ day: "Tue", slot: "9am", orders: 52 },
{ day: "Tue", slot: "12pm", orders: 66 },
{ day: "Tue", slot: "3pm", orders: 58 },
{ day: "Tue", slot: "6pm", orders: 41 },
{ day: "Tue", slot: "9pm", orders: 15 },
{ day: "Wed", slot: "6am", orders: 13 },
{ day: "Wed", slot: "9am", orders: 55 },
{ day: "Wed", slot: "12pm", orders: 70 },
{ day: "Wed", slot: "3pm", orders: 63 },
{ day: "Wed", slot: "6pm", orders: 44 },
{ day: "Wed", slot: "9pm", orders: 17 },
{ day: "Thu", slot: "6am", orders: 12 },
{ day: "Thu", slot: "9am", orders: 51 },
{ day: "Thu", slot: "12pm", orders: 68 },
{ day: "Thu", slot: "3pm", orders: 60 },
{ day: "Thu", slot: "6pm", orders: 47 },
{ day: "Thu", slot: "9pm", orders: 22 },
{ day: "Fri", slot: "6am", orders: 10 },
{ day: "Fri", slot: "9am", orders: 44 },
{ day: "Fri", slot: "12pm", orders: 59 },
{ day: "Fri", slot: "3pm", orders: 49 },
{ day: "Fri", slot: "6pm", orders: 52 },
{ day: "Fri", slot: "9pm", orders: 35 },
{ day: "Sat", slot: "6am", orders: 6 },
{ day: "Sat", slot: "9am", orders: 18 },
{ day: "Sat", slot: "12pm", orders: 31 },
{ day: "Sat", slot: "3pm", orders: 36 },
{ day: "Sat", slot: "6pm", orders: 40 },
{ day: "Sat", slot: "9pm", orders: 38 },
{ day: "Sun", slot: "6am", orders: 5 },
{ day: "Sun", slot: "9am", orders: 14 },
{ day: "Sun", slot: "12pm", orders: 26 },
{ day: "Sun", slot: "3pm", orders: 30 },
{ day: "Sun", slot: "6pm", orders: 28 },
{ day: "Sun", slot: "9pm", orders: 19 },
];
export function Example() {
return (
<Heatmap
data={data}
x="slot"
y="day"
value="orders"
title="Orders peak at 70 per hour at 12pm on Wednesdays"
subtitle="Average orders per hour by weekday and time of day"
note="Illustrative data"
/>
);
}{
"type": "heatmap",
"data": [
{ "day": "Mon", "slot": "6am", "orders": 12 },
{ "day": "Mon", "slot": "9am", "orders": 48 },
{ "day": "Mon", "slot": "12pm", "orders": 61 },
{ "day": "Mon", "slot": "3pm", "orders": 55 },
{ "day": "Mon", "slot": "6pm", "orders": 38 },
{ "day": "Mon", "slot": "9pm", "orders": 14 },
{ "day": "Tue", "slot": "6am", "orders": 11 },
{ "day": "Tue", "slot": "9am", "orders": 52 },
{ "day": "Tue", "slot": "12pm", "orders": 66 },
{ "day": "Tue", "slot": "3pm", "orders": 58 },
{ "day": "Tue", "slot": "6pm", "orders": 41 },
{ "day": "Tue", "slot": "9pm", "orders": 15 },
{ "day": "Wed", "slot": "6am", "orders": 13 },
{ "day": "Wed", "slot": "9am", "orders": 55 },
{ "day": "Wed", "slot": "12pm", "orders": 70 },
{ "day": "Wed", "slot": "3pm", "orders": 63 },
{ "day": "Wed", "slot": "6pm", "orders": 44 },
{ "day": "Wed", "slot": "9pm", "orders": 17 },
{ "day": "Thu", "slot": "6am", "orders": 12 },
{ "day": "Thu", "slot": "9am", "orders": 51 },
{ "day": "Thu", "slot": "12pm", "orders": 68 },
{ "day": "Thu", "slot": "3pm", "orders": 60 },
{ "day": "Thu", "slot": "6pm", "orders": 47 },
{ "day": "Thu", "slot": "9pm", "orders": 22 },
{ "day": "Fri", "slot": "6am", "orders": 10 },
{ "day": "Fri", "slot": "9am", "orders": 44 },
{ "day": "Fri", "slot": "12pm", "orders": 59 },
{ "day": "Fri", "slot": "3pm", "orders": 49 },
{ "day": "Fri", "slot": "6pm", "orders": 52 },
{ "day": "Fri", "slot": "9pm", "orders": 35 },
{ "day": "Sat", "slot": "6am", "orders": 6 },
{ "day": "Sat", "slot": "9am", "orders": 18 },
{ "day": "Sat", "slot": "12pm", "orders": 31 },
{ "day": "Sat", "slot": "3pm", "orders": 36 },
{ "day": "Sat", "slot": "6pm", "orders": 40 },
{ "day": "Sat", "slot": "9pm", "orders": 38 },
{ "day": "Sun", "slot": "6am", "orders": 5 },
{ "day": "Sun", "slot": "9am", "orders": 14 },
{ "day": "Sun", "slot": "12pm", "orders": 26 },
{ "day": "Sun", "slot": "3pm", "orders": 30 },
{ "day": "Sun", "slot": "6pm", "orders": 28 },
{ "day": "Sun", "slot": "9pm", "orders": 19 }
],
"x": "slot",
"y": "day",
"value": "orders",
"title": "Orders peak at 70 per hour at 12pm on Wednesdays",
"subtitle": "Average orders per hour by weekday and time of day",
"note": "Illustrative data"
}Render with import { Insight } from "insightcharts" and <Insight spec={spec} />. Nested specs resolve by name; nothing else to import.
Composition
Used in
No molecule or template lists heatmap in its composes. It still fits any slot that takes a component.
Installation
$ pnpm dlx shadcn@latest add @insightcharts/heatmapThe CLI copies the source into your project and needs the @insightcharts registry in components.json; see installation. With the package, import it by name:
import { Heatmap } from "insightcharts";Examples
Missing cells (cohort triangle)
Share of each signup cohort still active
By months since signup, January to August cohorts
import { Heatmap } from "insightcharts";
const data = [
{ cohort: "Jan cohort", month: "M0", retained: 1 },
{ cohort: "Jan cohort", month: "M1", retained: 0.64 },
{ cohort: "Jan cohort", month: "M2", retained: 0.58 },
{ cohort: "Jan cohort", month: "M3", retained: 0.49 },
{ cohort: "Jan cohort", month: "M4", retained: 0.46 },
{ cohort: "Jan cohort", month: "M5", retained: 0.41 },
{ cohort: "Jan cohort", month: "M6", retained: 0.36 },
{ cohort: "Jan cohort", month: "M7", retained: 0.31 },
{ cohort: "Feb cohort", month: "M0", retained: 1 },
{ cohort: "Feb cohort", month: "M1", retained: 0.67 },
{ cohort: "Feb cohort", month: "M2", retained: 0.56 },
{ cohort: "Feb cohort", month: "M3", retained: 0.51 },
{ cohort: "Feb cohort", month: "M4", retained: 0.45 },
{ cohort: "Feb cohort", month: "M5", retained: 0.4 },
{ cohort: "Feb cohort", month: "M6", retained: 0.35 },
{ cohort: "Mar cohort", month: "M0", retained: 1 },
{ cohort: "Mar cohort", month: "M1", retained: 0.67 },
{ cohort: "Mar cohort", month: "M2", retained: 0.56 },
{ cohort: "Mar cohort", month: "M3", retained: 0.51 },
{ cohort: "Mar cohort", month: "M4", retained: 0.45 },
{ cohort: "Mar cohort", month: "M5", retained: 0.39 },
{ cohort: "Apr cohort", month: "M0", retained: 1 },
{ cohort: "Apr cohort", month: "M1", retained: 0.65 },
{ cohort: "Apr cohort", month: "M2", retained: 0.59 },
{ cohort: "Apr cohort", month: "M3", retained: 0.52 },
{ cohort: "Apr cohort", month: "M4", retained: 0.45 },
{ cohort: "May cohort", month: "M0", retained: 1 },
{ cohort: "May cohort", month: "M1", retained: 0.73 },
{ cohort: "May cohort", month: "M2", retained: 0.63 },
{ cohort: "May cohort", month: "M3", retained: 0.58 },
{ cohort: "Jun cohort", month: "M0", retained: 1 },
{ cohort: "Jun cohort", month: "M1", retained: 0.71 },
{ cohort: "Jun cohort", month: "M2", retained: 0.62 },
{ cohort: "Jul cohort", month: "M0", retained: 1 },
{ cohort: "Jul cohort", month: "M1", retained: 0.73 },
{ cohort: "Aug cohort", month: "M0", retained: 1 },
];
export function Example() {
return (
<Heatmap
data={data}
x="month"
y="cohort"
value="retained"
format="percent"
title="Share of each signup cohort still active"
subtitle="By months since signup, January to August cohorts"
note="Illustrative data. Hatched cells have not happened yet."
/>
);
}{
"type": "heatmap",
"data": [
{ "cohort": "Jan cohort", "month": "M0", "retained": 1 },
{ "cohort": "Jan cohort", "month": "M1", "retained": 0.64 },
{ "cohort": "Jan cohort", "month": "M2", "retained": 0.58 },
{ "cohort": "Jan cohort", "month": "M3", "retained": 0.49 },
{ "cohort": "Jan cohort", "month": "M4", "retained": 0.46 },
{ "cohort": "Jan cohort", "month": "M5", "retained": 0.41 },
{ "cohort": "Jan cohort", "month": "M6", "retained": 0.36 },
{ "cohort": "Jan cohort", "month": "M7", "retained": 0.31 },
{ "cohort": "Feb cohort", "month": "M0", "retained": 1 },
{ "cohort": "Feb cohort", "month": "M1", "retained": 0.67 },
{ "cohort": "Feb cohort", "month": "M2", "retained": 0.56 },
{ "cohort": "Feb cohort", "month": "M3", "retained": 0.51 },
{ "cohort": "Feb cohort", "month": "M4", "retained": 0.45 },
{ "cohort": "Feb cohort", "month": "M5", "retained": 0.4 },
{ "cohort": "Feb cohort", "month": "M6", "retained": 0.35 },
{ "cohort": "Mar cohort", "month": "M0", "retained": 1 },
{ "cohort": "Mar cohort", "month": "M1", "retained": 0.67 },
{ "cohort": "Mar cohort", "month": "M2", "retained": 0.56 },
{ "cohort": "Mar cohort", "month": "M3", "retained": 0.51 },
{ "cohort": "Mar cohort", "month": "M4", "retained": 0.45 },
{ "cohort": "Mar cohort", "month": "M5", "retained": 0.39 },
{ "cohort": "Apr cohort", "month": "M0", "retained": 1 },
{ "cohort": "Apr cohort", "month": "M1", "retained": 0.65 },
{ "cohort": "Apr cohort", "month": "M2", "retained": 0.59 },
{ "cohort": "Apr cohort", "month": "M3", "retained": 0.52 },
{ "cohort": "Apr cohort", "month": "M4", "retained": 0.45 },
{ "cohort": "May cohort", "month": "M0", "retained": 1 },
{ "cohort": "May cohort", "month": "M1", "retained": 0.73 },
{ "cohort": "May cohort", "month": "M2", "retained": 0.63 },
{ "cohort": "May cohort", "month": "M3", "retained": 0.58 },
{ "cohort": "Jun cohort", "month": "M0", "retained": 1 },
{ "cohort": "Jun cohort", "month": "M1", "retained": 0.71 },
{ "cohort": "Jun cohort", "month": "M2", "retained": 0.62 },
{ "cohort": "Jul cohort", "month": "M0", "retained": 1 },
{ "cohort": "Jul cohort", "month": "M1", "retained": 0.73 },
{ "cohort": "Aug cohort", "month": "M0", "retained": 1 }
],
"x": "month",
"y": "cohort",
"value": "retained",
"format": "percent",
"title": "Share of each signup cohort still active",
"subtitle": "By months since signup, January to August cohorts",
"note": "Illustrative data. Hatched cells have not happened yet."
}Render with import { Insight } from "insightcharts" and <Insight spec={spec} />. Nested specs resolve by name; nothing else to import.
Diverging around zero
Temperature anomaly by region and decade, 1900s to 2010s
Difference from the 20th-century mean, °C
import { Heatmap } from "insightcharts";
const data = [
{ region: "Arctic", decade: "1900s", anomaly: -1.51 },
{ region: "Arctic", decade: "1910s", anomaly: -1.14 },
{ region: "Arctic", decade: "1920s", anomaly: -0.92 },
{ region: "Arctic", decade: "1930s", anomaly: -0.94 },
{ region: "Arctic", decade: "1940s", anomaly: -0.45 },
{ region: "Arctic", decade: "1950s", anomaly: 0.02 },
{ region: "Arctic", decade: "1960s", anomaly: 0.02 },
{ region: "Arctic", decade: "1970s", anomaly: 0.47 },
{ region: "Arctic", decade: "1980s", anomaly: 0.85 },
{ region: "Arctic", decade: "1990s", anomaly: 1.46 },
{ region: "Arctic", decade: "2000s", anomaly: 1.67 },
{ region: "Arctic", decade: "2010s", anomaly: 2.44 },
{ region: "Northern Europe", decade: "1900s", anomaly: -1.07 },
{ region: "Northern Europe", decade: "1910s", anomaly: -0.61 },
{ region: "Northern Europe", decade: "1920s", anomaly: -0.42 },
{ region: "Northern Europe", decade: "1930s", anomaly: -0.36 },
{ region: "Northern Europe", decade: "1940s", anomaly: -0.22 },
{ region: "Northern Europe", decade: "1950s", anomaly: -0.27 },
{ region: "Northern Europe", decade: "1960s", anomaly: -0.12 },
{ region: "Northern Europe", decade: "1970s", anomaly: 0.14 },
{ region: "Northern Europe", decade: "1980s", anomaly: 0.59 },
{ region: "Northern Europe", decade: "1990s", anomaly: 0.71 },
{ region: "Northern Europe", decade: "2000s", anomaly: 1.38 },
{ region: "Northern Europe", decade: "2010s", anomaly: 1.72 },
{ region: "Mediterranean", decade: "1900s", anomaly: -0.91 },
{ region: "Mediterranean", decade: "1910s", anomaly: -0.7 },
{ region: "Mediterranean", decade: "1920s", anomaly: -0.43 },
{ region: "Mediterranean", decade: "1930s", anomaly: -0.34 },
{ region: "Mediterranean", decade: "1940s", anomaly: -0.29 },
{ region: "Mediterranean", decade: "1950s", anomaly: 0.01 },
{ region: "Mediterranean", decade: "1960s", anomaly: 0.27 },
{ region: "Mediterranean", decade: "1970s", anomaly: 0.35 },
{ region: "Mediterranean", decade: "1980s", anomaly: 0.35 },
{ region: "Mediterranean", decade: "1990s", anomaly: 1.04 },
{ region: "Mediterranean", decade: "2000s", anomaly: 1.44 },
{ region: "Mediterranean", decade: "2010s", anomaly: 1.71 },
{ region: "Sahel", decade: "1900s", anomaly: -0.62 },
{ region: "Sahel", decade: "1910s", anomaly: -0.73 },
{ region: "Sahel", decade: "1920s", anomaly: -0.47 },
{ region: "Sahel", decade: "1930s", anomaly: -0.43 },
{ region: "Sahel", decade: "1940s", anomaly: -0.17 },
{ region: "Sahel", decade: "1950s", anomaly: 0.11 },
{ region: "Sahel", decade: "1960s", anomaly: -0.11 },
{ region: "Sahel", decade: "1970s", anomaly: 0.39 },
{ region: "Sahel", decade: "1980s", anomaly: 0.49 },
{ region: "Sahel", decade: "1990s", anomaly: 0.88 },
{ region: "Sahel", decade: "2000s", anomaly: 1.09 },
{ region: "Sahel", decade: "2010s", anomaly: 1.6 },
{ region: "Central Asia", decade: "1900s", anomaly: -0.72 },
{ region: "Central Asia", decade: "1910s", anomaly: -0.65 },
{ region: "Central Asia", decade: "1920s", anomaly: -0.63 },
{ region: "Central Asia", decade: "1930s", anomaly: -0.36 },
{ region: "Central Asia", decade: "1940s", anomaly: -0.39 },
{ region: "Central Asia", decade: "1950s", anomaly: 0.01 },
{ region: "Central Asia", decade: "1960s", anomaly: 0.06 },
{ region: "Central Asia", decade: "1970s", anomaly: 0.07 },
{ region: "Central Asia", decade: "1980s", anomaly: 0.26 },
{ region: "Central Asia", decade: "1990s", anomaly: 0.81 },
{ region: "Central Asia", decade: "2000s", anomaly: 1.16 },
{ region: "Central Asia", decade: "2010s", anomaly: 1.6 },
{ region: "South-East Asia", decade: "1900s", anomaly: -0.53 },
{ region: "South-East Asia", decade: "1910s", anomaly: -0.4 },
{ region: "South-East Asia", decade: "1920s", anomaly: -0.25 },
{ region: "South-East Asia", decade: "1930s", anomaly: -0.05 },
{ region: "South-East Asia", decade: "1940s", anomaly: -0.4 },
{ region: "South-East Asia", decade: "1950s", anomaly: -0.03 },
{ region: "South-East Asia", decade: "1960s", anomaly: 0.18 },
{ region: "South-East Asia", decade: "1970s", anomaly: 0.42 },
{ region: "South-East Asia", decade: "1980s", anomaly: 0.49 },
{ region: "South-East Asia", decade: "1990s", anomaly: 0.46 },
{ region: "South-East Asia", decade: "2000s", anomaly: 0.81 },
{ region: "South-East Asia", decade: "2010s", anomaly: 1.17 },
{ region: "Amazon basin", decade: "1900s", anomaly: -0.51 },
{ region: "Amazon basin", decade: "1910s", anomaly: -0.37 },
{ region: "Amazon basin", decade: "1920s", anomaly: -0.32 },
{ region: "Amazon basin", decade: "1930s", anomaly: -0.18 },
{ region: "Amazon basin", decade: "1940s", anomaly: -0.25 },
{ region: "Amazon basin", decade: "1950s", anomaly: 0.17 },
{ region: "Amazon basin", decade: "1960s", anomaly: 0.23 },
{ region: "Amazon basin", decade: "1970s", anomaly: 0.42 },
{ region: "Amazon basin", decade: "1980s", anomaly: 0.16 },
{ region: "Amazon basin", decade: "1990s", anomaly: 0.66 },
{ region: "Amazon basin", decade: "2000s", anomaly: 0.82 },
{ region: "Amazon basin", decade: "2010s", anomaly: 1.42 },
{ region: "Southern Ocean", decade: "1900s", anomaly: -0.67 },
{ region: "Southern Ocean", decade: "1910s", anomaly: -0.37 },
{ region: "Southern Ocean", decade: "1920s", anomaly: -0.48 },
{ region: "Southern Ocean", decade: "1930s", anomaly: -0.3 },
{ region: "Southern Ocean", decade: "1940s", anomaly: 0 },
{ region: "Southern Ocean", decade: "1950s", anomaly: -0.3 },
{ region: "Southern Ocean", decade: "1960s", anomaly: 0.02 },
{ region: "Southern Ocean", decade: "1970s", anomaly: 0.18 },
{ region: "Southern Ocean", decade: "1980s", anomaly: 0.07 },
{ region: "Southern Ocean", decade: "1990s", anomaly: 0.72 },
{ region: "Southern Ocean", decade: "2000s", anomaly: 1.17 },
{ region: "Southern Ocean", decade: "2010s", anomaly: 1.64 },
];
export function Example() {
return (
<Heatmap
data={data}
x="decade"
y="region"
value="anomaly"
diverging
format="signed"
title="Temperature anomaly by region and decade, 1900s to 2010s"
subtitle="Difference from the 20th-century mean, °C"
note="Illustrative data"
/>
);
}{
"type": "heatmap",
"data": [
{ "region": "Arctic", "decade": "1900s", "anomaly": -1.51 },
{ "region": "Arctic", "decade": "1910s", "anomaly": -1.14 },
{ "region": "Arctic", "decade": "1920s", "anomaly": -0.92 },
{ "region": "Arctic", "decade": "1930s", "anomaly": -0.94 },
{ "region": "Arctic", "decade": "1940s", "anomaly": -0.45 },
{ "region": "Arctic", "decade": "1950s", "anomaly": 0.02 },
{ "region": "Arctic", "decade": "1960s", "anomaly": 0.02 },
{ "region": "Arctic", "decade": "1970s", "anomaly": 0.47 },
{ "region": "Arctic", "decade": "1980s", "anomaly": 0.85 },
{ "region": "Arctic", "decade": "1990s", "anomaly": 1.46 },
{ "region": "Arctic", "decade": "2000s", "anomaly": 1.67 },
{ "region": "Arctic", "decade": "2010s", "anomaly": 2.44 },
{ "region": "Northern Europe", "decade": "1900s", "anomaly": -1.07 },
{ "region": "Northern Europe", "decade": "1910s", "anomaly": -0.61 },
{ "region": "Northern Europe", "decade": "1920s", "anomaly": -0.42 },
{ "region": "Northern Europe", "decade": "1930s", "anomaly": -0.36 },
{ "region": "Northern Europe", "decade": "1940s", "anomaly": -0.22 },
{ "region": "Northern Europe", "decade": "1950s", "anomaly": -0.27 },
{ "region": "Northern Europe", "decade": "1960s", "anomaly": -0.12 },
{ "region": "Northern Europe", "decade": "1970s", "anomaly": 0.14 },
{ "region": "Northern Europe", "decade": "1980s", "anomaly": 0.59 },
{ "region": "Northern Europe", "decade": "1990s", "anomaly": 0.71 },
{ "region": "Northern Europe", "decade": "2000s", "anomaly": 1.38 },
{ "region": "Northern Europe", "decade": "2010s", "anomaly": 1.72 },
{ "region": "Mediterranean", "decade": "1900s", "anomaly": -0.91 },
{ "region": "Mediterranean", "decade": "1910s", "anomaly": -0.7 },
{ "region": "Mediterranean", "decade": "1920s", "anomaly": -0.43 },
{ "region": "Mediterranean", "decade": "1930s", "anomaly": -0.34 },
{ "region": "Mediterranean", "decade": "1940s", "anomaly": -0.29 },
{ "region": "Mediterranean", "decade": "1950s", "anomaly": 0.01 },
{ "region": "Mediterranean", "decade": "1960s", "anomaly": 0.27 },
{ "region": "Mediterranean", "decade": "1970s", "anomaly": 0.35 },
{ "region": "Mediterranean", "decade": "1980s", "anomaly": 0.35 },
{ "region": "Mediterranean", "decade": "1990s", "anomaly": 1.04 },
{ "region": "Mediterranean", "decade": "2000s", "anomaly": 1.44 },
{ "region": "Mediterranean", "decade": "2010s", "anomaly": 1.71 },
{ "region": "Sahel", "decade": "1900s", "anomaly": -0.62 },
{ "region": "Sahel", "decade": "1910s", "anomaly": -0.73 },
{ "region": "Sahel", "decade": "1920s", "anomaly": -0.47 },
{ "region": "Sahel", "decade": "1930s", "anomaly": -0.43 },
{ "region": "Sahel", "decade": "1940s", "anomaly": -0.17 },
{ "region": "Sahel", "decade": "1950s", "anomaly": 0.11 },
{ "region": "Sahel", "decade": "1960s", "anomaly": -0.11 },
{ "region": "Sahel", "decade": "1970s", "anomaly": 0.39 },
{ "region": "Sahel", "decade": "1980s", "anomaly": 0.49 },
{ "region": "Sahel", "decade": "1990s", "anomaly": 0.88 },
{ "region": "Sahel", "decade": "2000s", "anomaly": 1.09 },
{ "region": "Sahel", "decade": "2010s", "anomaly": 1.6 },
{ "region": "Central Asia", "decade": "1900s", "anomaly": -0.72 },
{ "region": "Central Asia", "decade": "1910s", "anomaly": -0.65 },
{ "region": "Central Asia", "decade": "1920s", "anomaly": -0.63 },
{ "region": "Central Asia", "decade": "1930s", "anomaly": -0.36 },
{ "region": "Central Asia", "decade": "1940s", "anomaly": -0.39 },
{ "region": "Central Asia", "decade": "1950s", "anomaly": 0.01 },
{ "region": "Central Asia", "decade": "1960s", "anomaly": 0.06 },
{ "region": "Central Asia", "decade": "1970s", "anomaly": 0.07 },
{ "region": "Central Asia", "decade": "1980s", "anomaly": 0.26 },
{ "region": "Central Asia", "decade": "1990s", "anomaly": 0.81 },
{ "region": "Central Asia", "decade": "2000s", "anomaly": 1.16 },
{ "region": "Central Asia", "decade": "2010s", "anomaly": 1.6 },
{ "region": "South-East Asia", "decade": "1900s", "anomaly": -0.53 },
{ "region": "South-East Asia", "decade": "1910s", "anomaly": -0.4 },
{ "region": "South-East Asia", "decade": "1920s", "anomaly": -0.25 },
{ "region": "South-East Asia", "decade": "1930s", "anomaly": -0.05 },
{ "region": "South-East Asia", "decade": "1940s", "anomaly": -0.4 },
{ "region": "South-East Asia", "decade": "1950s", "anomaly": -0.03 },
{ "region": "South-East Asia", "decade": "1960s", "anomaly": 0.18 },
{ "region": "South-East Asia", "decade": "1970s", "anomaly": 0.42 },
{ "region": "South-East Asia", "decade": "1980s", "anomaly": 0.49 },
{ "region": "South-East Asia", "decade": "1990s", "anomaly": 0.46 },
{ "region": "South-East Asia", "decade": "2000s", "anomaly": 0.81 },
{ "region": "South-East Asia", "decade": "2010s", "anomaly": 1.17 },
{ "region": "Amazon basin", "decade": "1900s", "anomaly": -0.51 },
{ "region": "Amazon basin", "decade": "1910s", "anomaly": -0.37 },
{ "region": "Amazon basin", "decade": "1920s", "anomaly": -0.32 },
{ "region": "Amazon basin", "decade": "1930s", "anomaly": -0.18 },
{ "region": "Amazon basin", "decade": "1940s", "anomaly": -0.25 },
{ "region": "Amazon basin", "decade": "1950s", "anomaly": 0.17 },
{ "region": "Amazon basin", "decade": "1960s", "anomaly": 0.23 },
{ "region": "Amazon basin", "decade": "1970s", "anomaly": 0.42 },
{ "region": "Amazon basin", "decade": "1980s", "anomaly": 0.16 },
{ "region": "Amazon basin", "decade": "1990s", "anomaly": 0.66 },
{ "region": "Amazon basin", "decade": "2000s", "anomaly": 0.82 },
{ "region": "Amazon basin", "decade": "2010s", "anomaly": 1.42 },
{ "region": "Southern Ocean", "decade": "1900s", "anomaly": -0.67 },
{ "region": "Southern Ocean", "decade": "1910s", "anomaly": -0.37 },
{ "region": "Southern Ocean", "decade": "1920s", "anomaly": -0.48 },
{ "region": "Southern Ocean", "decade": "1930s", "anomaly": -0.3 },
{ "region": "Southern Ocean", "decade": "1940s", "anomaly": 0 },
{ "region": "Southern Ocean", "decade": "1950s", "anomaly": -0.3 },
{ "region": "Southern Ocean", "decade": "1960s", "anomaly": 0.02 },
{ "region": "Southern Ocean", "decade": "1970s", "anomaly": 0.18 },
{ "region": "Southern Ocean", "decade": "1980s", "anomaly": 0.07 },
{ "region": "Southern Ocean", "decade": "1990s", "anomaly": 0.72 },
{ "region": "Southern Ocean", "decade": "2000s", "anomaly": 1.17 },
{ "region": "Southern Ocean", "decade": "2010s", "anomaly": 1.64 }
],
"x": "decade",
"y": "region",
"value": "anomaly",
"diverging": true,
"format": "signed",
"title": "Temperature anomaly by region and decade, 1900s to 2010s",
"subtitle": "Difference from the 20th-century mean, °C",
"note": "Illustrative data"
}Render with import { Insight } from "insightcharts" and <Insight spec={spec} />. Nested specs resolve by name; nothing else to import.
Stress: 18 by 24, highlighted row, a gap
Trips started per hour by station
Weekday average, 18 stations. Station 18 is highlighted. Station 08 has no data from 10:00 to 13:00.
import { Heatmap } from "insightcharts";
const data = [
{ station: "Station 01", hour: "00:00", trips: 1 },
{ station: "Station 01", hour: "01:00", trips: 0 },
{ station: "Station 01", hour: "02:00", trips: 2 },
{ station: "Station 01", hour: "03:00", trips: 1 },
{ station: "Station 01", hour: "04:00", trips: 2 },
{ station: "Station 01", hour: "05:00", trips: 6 },
{ station: "Station 01", hour: "06:00", trips: 18 },
{ station: "Station 01", hour: "07:00", trips: 35 },
{ station: "Station 01", hour: "08:00", trips: 49 },
{ station: "Station 01", hour: "09:00", trips: 45 },
{ station: "Station 01", hour: "10:00", trips: 31 },
{ station: "Station 01", hour: "11:00", trips: 31 },
{ station: "Station 01", hour: "12:00", trips: 33 },
{ station: "Station 01", hour: "13:00", trips: 35 },
{ station: "Station 01", hour: "14:00", trips: 40 },
{ station: "Station 01", hour: "15:00", trips: 47 },
{ station: "Station 01", hour: "16:00", trips: 59 },
{ station: "Station 01", hour: "17:00", trips: 62 },
{ station: "Station 01", hour: "18:00", trips: 53 },
{ station: "Station 01", hour: "19:00", trips: 39 },
{ station: "Station 01", hour: "20:00", trips: 19 },
{ station: "Station 01", hour: "21:00", trips: 10 },
{ station: "Station 01", hour: "22:00", trips: 4 },
{ station: "Station 01", hour: "23:00", trips: 1 },
{ station: "Station 02", hour: "00:00", trips: 3 },
{ station: "Station 02", hour: "01:00", trips: 3 },
{ station: "Station 02", hour: "02:00", trips: 2 },
{ station: "Station 02", hour: "03:00", trips: 4 },
{ station: "Station 02", hour: "04:00", trips: 2 },
{ station: "Station 02", hour: "05:00", trips: 6 },
{ station: "Station 02", hour: "06:00", trips: 21 },
{ station: "Station 02", hour: "07:00", trips: 39 },
{ station: "Station 02", hour: "08:00", trips: 46 },
{ station: "Station 02", hour: "09:00", trips: 41 },
{ station: "Station 02", hour: "10:00", trips: 24 },
{ station: "Station 02", hour: "11:00", trips: 14 },
{ station: "Station 02", hour: "12:00", trips: 15 },
{ station: "Station 02", hour: "13:00", trips: 13 },
{ station: "Station 02", hour: "14:00", trips: 19 },
{ station: "Station 02", hour: "15:00", trips: 27 },
{ station: "Station 02", hour: "16:00", trips: 39 },
{ station: "Station 02", hour: "17:00", trips: 50 },
{ station: "Station 02", hour: "18:00", trips: 49 },
{ station: "Station 02", hour: "19:00", trips: 33 },
{ station: "Station 02", hour: "20:00", trips: 19 },
{ station: "Station 02", hour: "21:00", trips: 7 },
{ station: "Station 02", hour: "22:00", trips: 4 },
{ station: "Station 02", hour: "23:00", trips: 5 },
{ station: "Station 03", hour: "00:00", trips: 1 },
{ station: "Station 03", hour: "01:00", trips: 4 },
{ station: "Station 03", hour: "02:00", trips: 2 },
{ station: "Station 03", hour: "03:00", trips: 5 },
{ station: "Station 03", hour: "04:00", trips: 2 },
{ station: "Station 03", hour: "05:00", trips: 9 },
{ station: "Station 03", hour: "06:00", trips: 18 },
{ station: "Station 03", hour: "07:00", trips: 43 },
{ station: "Station 03", hour: "08:00", trips: 53 },
{ station: "Station 03", hour: "09:00", trips: 44 },
{ station: "Station 03", hour: "10:00", trips: 26 },
{ station: "Station 03", hour: "11:00", trips: 13 },
{ station: "Station 03", hour: "12:00", trips: 13 },
{ station: "Station 03", hour: "13:00", trips: 15 },
{ station: "Station 03", hour: "14:00", trips: 19 },
{ station: "Station 03", hour: "15:00", trips: 28 },
{ station: "Station 03", hour: "16:00", trips: 42 },
{ station: "Station 03", hour: "17:00", trips: 53 },
{ station: "Station 03", hour: "18:00", trips: 55 },
{ station: "Station 03", hour: "19:00", trips: 34 },
{ station: "Station 03", hour: "20:00", trips: 15 },
{ station: "Station 03", hour: "21:00", trips: 5 },
{ station: "Station 03", hour: "22:00", trips: 5 },
{ station: "Station 03", hour: "23:00", trips: 2 },
{ station: "Station 04", hour: "00:00", trips: 1 },
{ station: "Station 04", hour: "01:00", trips: 2 },
{ station: "Station 04", hour: "02:00", trips: 2 },
{ station: "Station 04", hour: "03:00", trips: 2 },
{ station: "Station 04", hour: "04:00", trips: 1 },
{ station: "Station 04", hour: "05:00", trips: 6 },
{ station: "Station 04", hour: "06:00", trips: 21 },
{ station: "Station 04", hour: "07:00", trips: 45 },
{ station: "Station 04", hour: "08:00", trips: 60 },
{ station: "Station 04", hour: "09:00", trips: 53 },
{ station: "Station 04", hour: "10:00", trips: 36 },
{ station: "Station 04", hour: "11:00", trips: 32 },
{ station: "Station 04", hour: "12:00", trips: 32 },
{ station: "Station 04", hour: "13:00", trips: 39 },
{ station: "Station 04", hour: "14:00", trips: 45 },
{ station: "Station 04", hour: "15:00", trips: 50 },
{ station: "Station 04", hour: "16:00", trips: 64 },
{ station: "Station 04", hour: "17:00", trips: 76 },
{ station: "Station 04", hour: "18:00", trips: 68 },
{ station: "Station 04", hour: "19:00", trips: 43 },
{ station: "Station 04", hour: "20:00", trips: 21 },
{ station: "Station 04", hour: "21:00", trips: 12 },
{ station: "Station 04", hour: "22:00", trips: 5 },
{ station: "Station 04", hour: "23:00", trips: 1 },
{ station: "Station 05", hour: "00:00", trips: 1 },
{ station: "Station 05", hour: "01:00", trips: 0 },
{ station: "Station 05", hour: "02:00", trips: 3 },
{ station: "Station 05", hour: "03:00", trips: 4 },
{ station: "Station 05", hour: "04:00", trips: 3 },
{ station: "Station 05", hour: "05:00", trips: 9 },
{ station: "Station 05", hour: "06:00", trips: 21 },
{ station: "Station 05", hour: "07:00", trips: 48 },
{ station: "Station 05", hour: "08:00", trips: 60 },
{ station: "Station 05", hour: "09:00", trips: 50 },
{ station: "Station 05", hour: "10:00", trips: 29 },
{ station: "Station 05", hour: "11:00", trips: 14 },
{ station: "Station 05", hour: "12:00", trips: 13 },
{ station: "Station 05", hour: "13:00", trips: 17 },
{ station: "Station 05", hour: "14:00", trips: 19 },
{ station: "Station 05", hour: "15:00", trips: 29 },
{ station: "Station 05", hour: "16:00", trips: 47 },
{ station: "Station 05", hour: "17:00", trips: 63 },
{ station: "Station 05", hour: "18:00", trips: 60 },
{ station: "Station 05", hour: "19:00", trips: 39 },
{ station: "Station 05", hour: "20:00", trips: 23 },
{ station: "Station 05", hour: "21:00", trips: 7 },
{ station: "Station 05", hour: "22:00", trips: 6 },
{ station: "Station 05", hour: "23:00", trips: 4 },
{ station: "Station 06", hour: "00:00", trips: 1 },
{ station: "Station 06", hour: "01:00", trips: 4 },
{ station: "Station 06", hour: "02:00", trips: 3 },
{ station: "Station 06", hour: "03:00", trips: 3 },
{ station: "Station 06", hour: "04:00", trips: 1 },
{ station: "Station 06", hour: "05:00", trips: 10 },
{ station: "Station 06", hour: "06:00", trips: 23 },
{ station: "Station 06", hour: "07:00", trips: 50 },
{ station: "Station 06", hour: "08:00", trips: 65 },
{ station: "Station 06", hour: "09:00", trips: 50 },
{ station: "Station 06", hour: "10:00", trips: 29 },
{ station: "Station 06", hour: "11:00", trips: 16 },
{ station: "Station 06", hour: "12:00", trips: 15 },
{ station: "Station 06", hour: "13:00", trips: 16 },
{ station: "Station 06", hour: "14:00", trips: 20 },
{ station: "Station 06", hour: "15:00", trips: 33 },
{ station: "Station 06", hour: "16:00", trips: 50 },
{ station: "Station 06", hour: "17:00", trips: 67 },
{ station: "Station 06", hour: "18:00", trips: 65 },
{ station: "Station 06", hour: "19:00", trips: 44 },
{ station: "Station 06", hour: "20:00", trips: 22 },
{ station: "Station 06", hour: "21:00", trips: 9 },
{ station: "Station 06", hour: "22:00", trips: 6 },
{ station: "Station 06", hour: "23:00", trips: 3 },
{ station: "Station 07", hour: "00:00", trips: 3 },
{ station: "Station 07", hour: "01:00", trips: 1 },
{ station: "Station 07", hour: "02:00", trips: 4 },
{ station: "Station 07", hour: "03:00", trips: 0 },
{ station: "Station 07", hour: "04:00", trips: 5 },
{ station: "Station 07", hour: "05:00", trips: 10 },
{ station: "Station 07", hour: "06:00", trips: 26 },
{ station: "Station 07", hour: "07:00", trips: 53 },
{ station: "Station 07", hour: "08:00", trips: 72 },
{ station: "Station 07", hour: "09:00", trips: 59 },
{ station: "Station 07", hour: "10:00", trips: 39 },
{ station: "Station 07", hour: "11:00", trips: 30 },
{ station: "Station 07", hour: "12:00", trips: 31 },
{ station: "Station 07", hour: "13:00", trips: 36 },
{ station: "Station 07", hour: "14:00", trips: 45 },
{ station: "Station 07", hour: "15:00", trips: 54 },
{ station: "Station 07", hour: "16:00", trips: 74 },
{ station: "Station 07", hour: "17:00", trips: 87 },
{ station: "Station 07", hour: "18:00", trips: 77 },
{ station: "Station 07", hour: "19:00", trips: 51 },
{ station: "Station 07", hour: "20:00", trips: 26 },
{ station: "Station 07", hour: "21:00", trips: 10 },
{ station: "Station 07", hour: "22:00", trips: 3 },
{ station: "Station 07", hour: "23:00", trips: 3 },
{ station: "Station 08", hour: "00:00", trips: 2 },
{ station: "Station 08", hour: "01:00", trips: 0 },
{ station: "Station 08", hour: "02:00", trips: 4 },
{ station: "Station 08", hour: "03:00", trips: 5 },
{ station: "Station 08", hour: "04:00", trips: 5 },
{ station: "Station 08", hour: "05:00", trips: 8 },
{ station: "Station 08", hour: "06:00", trips: 30 },
{ station: "Station 08", hour: "07:00", trips: 56 },
{ station: "Station 08", hour: "08:00", trips: 74 },
{ station: "Station 08", hour: "09:00", trips: 58 },
{ station: "Station 08", hour: "14:00", trips: 18 },
{ station: "Station 08", hour: "15:00", trips: 34 },
{ station: "Station 08", hour: "16:00", trips: 58 },
{ station: "Station 08", hour: "17:00", trips: 74 },
{ station: "Station 08", hour: "18:00", trips: 72 },
{ station: "Station 08", hour: "19:00", trips: 47 },
{ station: "Station 08", hour: "20:00", trips: 21 },
{ station: "Station 08", hour: "21:00", trips: 8 },
{ station: "Station 08", hour: "22:00", trips: 6 },
{ station: "Station 08", hour: "23:00", trips: 4 },
{ station: "Station 09", hour: "00:00", trips: 2 },
{ station: "Station 09", hour: "01:00", trips: 4 },
{ station: "Station 09", hour: "02:00", trips: 4 },
{ station: "Station 09", hour: "03:00", trips: 2 },
{ station: "Station 09", hour: "04:00", trips: 6 },
{ station: "Station 09", hour: "05:00", trips: 9 },
{ station: "Station 09", hour: "06:00", trips: 31 },
{ station: "Station 09", hour: "07:00", trips: 57 },
{ station: "Station 09", hour: "08:00", trips: 75 },
{ station: "Station 09", hour: "09:00", trips: 59 },
{ station: "Station 09", hour: "10:00", trips: 33 },
{ station: "Station 09", hour: "11:00", trips: 15 },
{ station: "Station 09", hour: "12:00", trips: 13 },
{ station: "Station 09", hour: "13:00", trips: 15 },
{ station: "Station 09", hour: "14:00", trips: 19 },
{ station: "Station 09", hour: "15:00", trips: 37 },
{ station: "Station 09", hour: "16:00", trips: 56 },
{ station: "Station 09", hour: "17:00", trips: 76 },
{ station: "Station 09", hour: "18:00", trips: 74 },
{ station: "Station 09", hour: "19:00", trips: 50 },
{ station: "Station 09", hour: "20:00", trips: 25 },
{ station: "Station 09", hour: "21:00", trips: 9 },
{ station: "Station 09", hour: "22:00", trips: 3 },
{ station: "Station 09", hour: "23:00", trips: 2 },
{ station: "Station 10", hour: "00:00", trips: 1 },
{ station: "Station 10", hour: "01:00", trips: 2 },
{ station: "Station 10", hour: "02:00", trips: 4 },
{ station: "Station 10", hour: "03:00", trips: 2 },
{ station: "Station 10", hour: "04:00", trips: 3 },
{ station: "Station 10", hour: "05:00", trips: 13 },
{ station: "Station 10", hour: "06:00", trips: 30 },
{ station: "Station 10", hour: "07:00", trips: 65 },
{ station: "Station 10", hour: "08:00", trips: 83 },
{ station: "Station 10", hour: "09:00", trips: 70 },
{ station: "Station 10", hour: "10:00", trips: 47 },
{ station: "Station 10", hour: "11:00", trips: 32 },
{ station: "Station 10", hour: "12:00", trips: 30 },
{ station: "Station 10", hour: "13:00", trips: 36 },
{ station: "Station 10", hour: "14:00", trips: 46 },
{ station: "Station 10", hour: "15:00", trips: 61 },
{ station: "Station 10", hour: "16:00", trips: 80 },
{ station: "Station 10", hour: "17:00", trips: 96 },
{ station: "Station 10", hour: "18:00", trips: 87 },
{ station: "Station 10", hour: "19:00", trips: 58 },
{ station: "Station 10", hour: "20:00", trips: 28 },
{ station: "Station 10", hour: "21:00", trips: 12 },
{ station: "Station 10", hour: "22:00", trips: 6 },
{ station: "Station 10", hour: "23:00", trips: 5 },
{ station: "Station 11", hour: "00:00", trips: 3 },
{ station: "Station 11", hour: "01:00", trips: 3 },
{ station: "Station 11", hour: "02:00", trips: 3 },
{ station: "Station 11", hour: "03:00", trips: 3 },
{ station: "Station 11", hour: "04:00", trips: 6 },
{ station: "Station 11", hour: "05:00", trips: 9 },
{ station: "Station 11", hour: "06:00", trips: 31 },
{ station: "Station 11", hour: "07:00", trips: 65 },
{ station: "Station 11", hour: "08:00", trips: 84 },
{ station: "Station 11", hour: "09:00", trips: 67 },
{ station: "Station 11", hour: "10:00", trips: 37 },
{ station: "Station 11", hour: "11:00", trips: 17 },
{ station: "Station 11", hour: "12:00", trips: 13 },
{ station: "Station 11", hour: "13:00", trips: 14 },
{ station: "Station 11", hour: "14:00", trips: 23 },
{ station: "Station 11", hour: "15:00", trips: 37 },
{ station: "Station 11", hour: "16:00", trips: 61 },
{ station: "Station 11", hour: "17:00", trips: 84 },
{ station: "Station 11", hour: "18:00", trips: 82 },
{ station: "Station 11", hour: "19:00", trips: 55 },
{ station: "Station 11", hour: "20:00", trips: 26 },
{ station: "Station 11", hour: "21:00", trips: 12 },
{ station: "Station 11", hour: "22:00", trips: 2 },
{ station: "Station 11", hour: "23:00", trips: 2 },
{ station: "Station 12", hour: "00:00", trips: 1 },
{ station: "Station 12", hour: "01:00", trips: 3 },
{ station: "Station 12", hour: "02:00", trips: 2 },
{ station: "Station 12", hour: "03:00", trips: 3 },
{ station: "Station 12", hour: "04:00", trips: 2 },
{ station: "Station 12", hour: "05:00", trips: 10 },
{ station: "Station 12", hour: "06:00", trips: 33 },
{ station: "Station 12", hour: "07:00", trips: 67 },
{ station: "Station 12", hour: "08:00", trips: 87 },
{ station: "Station 12", hour: "09:00", trips: 68 },
{ station: "Station 12", hour: "10:00", trips: 36 },
{ station: "Station 12", hour: "11:00", trips: 21 },
{ station: "Station 12", hour: "12:00", trips: 16 },
{ station: "Station 12", hour: "13:00", trips: 18 },
{ station: "Station 12", hour: "14:00", trips: 22 },
{ station: "Station 12", hour: "15:00", trips: 38 },
{ station: "Station 12", hour: "16:00", trips: 65 },
{ station: "Station 12", hour: "17:00", trips: 89 },
{ station: "Station 12", hour: "18:00", trips: 89 },
{ station: "Station 12", hour: "19:00", trips: 59 },
{ station: "Station 12", hour: "20:00", trips: 30 },
{ station: "Station 12", hour: "21:00", trips: 10 },
{ station: "Station 12", hour: "22:00", trips: 4 },
{ station: "Station 12", hour: "23:00", trips: 1 },
{ station: "Station 13", hour: "00:00", trips: 1 },
{ station: "Station 13", hour: "01:00", trips: 0 },
{ station: "Station 13", hour: "02:00", trips: 3 },
{ station: "Station 13", hour: "03:00", trips: 0 },
{ station: "Station 13", hour: "04:00", trips: 3 },
{ station: "Station 13", hour: "05:00", trips: 11 },
{ station: "Station 13", hour: "06:00", trips: 37 },
{ station: "Station 13", hour: "07:00", trips: 72 },
{ station: "Station 13", hour: "08:00", trips: 94 },
{ station: "Station 13", hour: "09:00", trips: 81 },
{ station: "Station 13", hour: "10:00", trips: 51 },
{ station: "Station 13", hour: "11:00", trips: 33 },
{ station: "Station 13", hour: "12:00", trips: 32 },
{ station: "Station 13", hour: "13:00", trips: 41 },
{ station: "Station 13", hour: "14:00", trips: 45 },
{ station: "Station 13", hour: "15:00", trips: 63 },
{ station: "Station 13", hour: "16:00", trips: 86 },
{ station: "Station 13", hour: "17:00", trips: 110 },
{ station: "Station 13", hour: "18:00", trips: 103 },
{ station: "Station 13", hour: "19:00", trips: 67 },
{ station: "Station 13", hour: "20:00", trips: 35 },
{ station: "Station 13", hour: "21:00", trips: 12 },
{ station: "Station 13", hour: "22:00", trips: 3 },
{ station: "Station 13", hour: "23:00", trips: 3 },
{ station: "Station 14", hour: "00:00", trips: 0 },
{ station: "Station 14", hour: "01:00", trips: 1 },
{ station: "Station 14", hour: "02:00", trips: 4 },
{ station: "Station 14", hour: "03:00", trips: 3 },
{ station: "Station 14", hour: "04:00", trips: 4 },
{ station: "Station 14", hour: "05:00", trips: 12 },
{ station: "Station 14", hour: "06:00", trips: 37 },
{ station: "Station 14", hour: "07:00", trips: 73 },
{ station: "Station 14", hour: "08:00", trips: 94 },
{ station: "Station 14", hour: "09:00", trips: 79 },
{ station: "Station 14", hour: "10:00", trips: 39 },
{ station: "Station 14", hour: "11:00", trips: 21 },
{ station: "Station 14", hour: "12:00", trips: 13 },
{ station: "Station 14", hour: "13:00", trips: 15 },
{ station: "Station 14", hour: "14:00", trips: 23 },
{ station: "Station 14", hour: "15:00", trips: 39 },
{ station: "Station 14", hour: "16:00", trips: 73 },
{ station: "Station 14", hour: "17:00", trips: 99 },
{ station: "Station 14", hour: "18:00", trips: 95 },
{ station: "Station 14", hour: "19:00", trips: 67 },
{ station: "Station 14", hour: "20:00", trips: 30 },
{ station: "Station 14", hour: "21:00", trips: 10 },
{ station: "Station 14", hour: "22:00", trips: 5 },
{ station: "Station 14", hour: "23:00", trips: 5 },
{ station: "Station 15", hour: "00:00", trips: 2 },
{ station: "Station 15", hour: "01:00", trips: 2 },
{ station: "Station 15", hour: "02:00", trips: 2 },
{ station: "Station 15", hour: "03:00", trips: 5 },
{ station: "Station 15", hour: "04:00", trips: 2 },
{ station: "Station 15", hour: "05:00", trips: 14 },
{ station: "Station 15", hour: "06:00", trips: 39 },
{ station: "Station 15", hour: "07:00", trips: 79 },
{ station: "Station 15", hour: "08:00", trips: 98 },
{ station: "Station 15", hour: "09:00", trips: 82 },
{ station: "Station 15", hour: "10:00", trips: 45 },
{ station: "Station 15", hour: "11:00", trips: 22 },
{ station: "Station 15", hour: "12:00", trips: 16 },
{ station: "Station 15", hour: "13:00", trips: 18 },
{ station: "Station 15", hour: "14:00", trips: 22 },
{ station: "Station 15", hour: "15:00", trips: 40 },
{ station: "Station 15", hour: "16:00", trips: 71 },
{ station: "Station 15", hour: "17:00", trips: 103 },
{ station: "Station 15", hour: "18:00", trips: 100 },
{ station: "Station 15", hour: "19:00", trips: 69 },
{ station: "Station 15", hour: "20:00", trips: 30 },
{ station: "Station 15", hour: "21:00", trips: 13 },
{ station: "Station 15", hour: "22:00", trips: 4 },
{ station: "Station 15", hour: "23:00", trips: 3 },
{ station: "Station 16", hour: "00:00", trips: 4 },
{ station: "Station 16", hour: "01:00", trips: 3 },
{ station: "Station 16", hour: "02:00", trips: 1 },
{ station: "Station 16", hour: "03:00", trips: 5 },
{ station: "Station 16", hour: "04:00", trips: 4 },
{ station: "Station 16", hour: "05:00", trips: 14 },
{ station: "Station 16", hour: "06:00", trips: 42 },
{ station: "Station 16", hour: "07:00", trips: 80 },
{ station: "Station 16", hour: "08:00", trips: 107 },
{ station: "Station 16", hour: "09:00", trips: 92 },
{ station: "Station 16", hour: "10:00", trips: 53 },
{ station: "Station 16", hour: "11:00", trips: 35 },
{ station: "Station 16", hour: "12:00", trips: 33 },
{ station: "Station 16", hour: "13:00", trips: 39 },
{ station: "Station 16", hour: "14:00", trips: 49 },
{ station: "Station 16", hour: "15:00", trips: 66 },
{ station: "Station 16", hour: "16:00", trips: 96 },
{ station: "Station 16", hour: "17:00", trips: 118 },
{ station: "Station 16", hour: "18:00", trips: 111 },
{ station: "Station 16", hour: "19:00", trips: 74 },
{ station: "Station 16", hour: "20:00", trips: 34 },
{ station: "Station 16", hour: "21:00", trips: 15 },
{ station: "Station 16", hour: "22:00", trips: 6 },
{ station: "Station 16", hour: "23:00", trips: 1 },
{ station: "Station 17", hour: "00:00", trips: 1 },
{ station: "Station 17", hour: "01:00", trips: 2 },
{ station: "Station 17", hour: "02:00", trips: 5 },
{ station: "Station 17", hour: "03:00", trips: 4 },
{ station: "Station 17", hour: "04:00", trips: 2 },
{ station: "Station 17", hour: "05:00", trips: 14 },
{ station: "Station 17", hour: "06:00", trips: 42 },
{ station: "Station 17", hour: "07:00", trips: 82 },
{ station: "Station 17", hour: "08:00", trips: 108 },
{ station: "Station 17", hour: "09:00", trips: 89 },
{ station: "Station 17", hour: "10:00", trips: 46 },
{ station: "Station 17", hour: "11:00", trips: 20 },
{ station: "Station 17", hour: "12:00", trips: 14 },
{ station: "Station 17", hour: "13:00", trips: 17 },
{ station: "Station 17", hour: "14:00", trips: 24 },
{ station: "Station 17", hour: "15:00", trips: 45 },
{ station: "Station 17", hour: "16:00", trips: 78 },
{ station: "Station 17", hour: "17:00", trips: 111 },
{ station: "Station 17", hour: "18:00", trips: 107 },
{ station: "Station 17", hour: "19:00", trips: 71 },
{ station: "Station 17", hour: "20:00", trips: 35 },
{ station: "Station 17", hour: "21:00", trips: 15 },
{ station: "Station 17", hour: "22:00", trips: 5 },
{ station: "Station 17", hour: "23:00", trips: 3 },
{ station: "Station 18", hour: "00:00", trips: 1 },
{ station: "Station 18", hour: "01:00", trips: 5 },
{ station: "Station 18", hour: "02:00", trips: 4 },
{ station: "Station 18", hour: "03:00", trips: 2 },
{ station: "Station 18", hour: "04:00", trips: 7 },
{ station: "Station 18", hour: "05:00", trips: 12 },
{ station: "Station 18", hour: "06:00", trips: 42 },
{ station: "Station 18", hour: "07:00", trips: 87 },
{ station: "Station 18", hour: "08:00", trips: 114 },
{ station: "Station 18", hour: "09:00", trips: 87 },
{ station: "Station 18", hour: "10:00", trips: 48 },
{ station: "Station 18", hour: "11:00", trips: 22 },
{ station: "Station 18", hour: "12:00", trips: 15 },
{ station: "Station 18", hour: "13:00", trips: 16 },
{ station: "Station 18", hour: "14:00", trips: 23 },
{ station: "Station 18", hour: "15:00", trips: 42 },
{ station: "Station 18", hour: "16:00", trips: 82 },
{ station: "Station 18", hour: "17:00", trips: 115 },
{ station: "Station 18", hour: "18:00", trips: 108 },
{ station: "Station 18", hour: "19:00", trips: 76 },
{ station: "Station 18", hour: "20:00", trips: 35 },
{ station: "Station 18", hour: "21:00", trips: 14 },
{ station: "Station 18", hour: "22:00", trips: 6 },
{ station: "Station 18", hour: "23:00", trips: 3 },
];
export function Example() {
return (
<Heatmap
data={data}
x="hour"
y="station"
value="trips"
highlight="Station 18"
height={460}
title="Trips started per hour by station"
subtitle="Weekday average, 18 stations. Station 18 is highlighted. Station 08 has no data from 10:00 to 13:00."
note="Illustrative data"
/>
);
}{
"type": "heatmap",
"data": [
{ "station": "Station 01", "hour": "00:00", "trips": 1 },
{ "station": "Station 01", "hour": "01:00", "trips": 0 },
{ "station": "Station 01", "hour": "02:00", "trips": 2 },
{ "station": "Station 01", "hour": "03:00", "trips": 1 },
{ "station": "Station 01", "hour": "04:00", "trips": 2 },
{ "station": "Station 01", "hour": "05:00", "trips": 6 },
{ "station": "Station 01", "hour": "06:00", "trips": 18 },
{ "station": "Station 01", "hour": "07:00", "trips": 35 },
{ "station": "Station 01", "hour": "08:00", "trips": 49 },
{ "station": "Station 01", "hour": "09:00", "trips": 45 },
{ "station": "Station 01", "hour": "10:00", "trips": 31 },
{ "station": "Station 01", "hour": "11:00", "trips": 31 },
{ "station": "Station 01", "hour": "12:00", "trips": 33 },
{ "station": "Station 01", "hour": "13:00", "trips": 35 },
{ "station": "Station 01", "hour": "14:00", "trips": 40 },
{ "station": "Station 01", "hour": "15:00", "trips": 47 },
{ "station": "Station 01", "hour": "16:00", "trips": 59 },
{ "station": "Station 01", "hour": "17:00", "trips": 62 },
{ "station": "Station 01", "hour": "18:00", "trips": 53 },
{ "station": "Station 01", "hour": "19:00", "trips": 39 },
{ "station": "Station 01", "hour": "20:00", "trips": 19 },
{ "station": "Station 01", "hour": "21:00", "trips": 10 },
{ "station": "Station 01", "hour": "22:00", "trips": 4 },
{ "station": "Station 01", "hour": "23:00", "trips": 1 },
{ "station": "Station 02", "hour": "00:00", "trips": 3 },
{ "station": "Station 02", "hour": "01:00", "trips": 3 },
{ "station": "Station 02", "hour": "02:00", "trips": 2 },
{ "station": "Station 02", "hour": "03:00", "trips": 4 },
{ "station": "Station 02", "hour": "04:00", "trips": 2 },
{ "station": "Station 02", "hour": "05:00", "trips": 6 },
{ "station": "Station 02", "hour": "06:00", "trips": 21 },
{ "station": "Station 02", "hour": "07:00", "trips": 39 },
{ "station": "Station 02", "hour": "08:00", "trips": 46 },
{ "station": "Station 02", "hour": "09:00", "trips": 41 },
{ "station": "Station 02", "hour": "10:00", "trips": 24 },
{ "station": "Station 02", "hour": "11:00", "trips": 14 },
{ "station": "Station 02", "hour": "12:00", "trips": 15 },
{ "station": "Station 02", "hour": "13:00", "trips": 13 },
{ "station": "Station 02", "hour": "14:00", "trips": 19 },
{ "station": "Station 02", "hour": "15:00", "trips": 27 },
{ "station": "Station 02", "hour": "16:00", "trips": 39 },
{ "station": "Station 02", "hour": "17:00", "trips": 50 },
{ "station": "Station 02", "hour": "18:00", "trips": 49 },
{ "station": "Station 02", "hour": "19:00", "trips": 33 },
{ "station": "Station 02", "hour": "20:00", "trips": 19 },
{ "station": "Station 02", "hour": "21:00", "trips": 7 },
{ "station": "Station 02", "hour": "22:00", "trips": 4 },
{ "station": "Station 02", "hour": "23:00", "trips": 5 },
{ "station": "Station 03", "hour": "00:00", "trips": 1 },
{ "station": "Station 03", "hour": "01:00", "trips": 4 },
{ "station": "Station 03", "hour": "02:00", "trips": 2 },
{ "station": "Station 03", "hour": "03:00", "trips": 5 },
{ "station": "Station 03", "hour": "04:00", "trips": 2 },
{ "station": "Station 03", "hour": "05:00", "trips": 9 },
{ "station": "Station 03", "hour": "06:00", "trips": 18 },
{ "station": "Station 03", "hour": "07:00", "trips": 43 },
{ "station": "Station 03", "hour": "08:00", "trips": 53 },
{ "station": "Station 03", "hour": "09:00", "trips": 44 },
{ "station": "Station 03", "hour": "10:00", "trips": 26 },
{ "station": "Station 03", "hour": "11:00", "trips": 13 },
{ "station": "Station 03", "hour": "12:00", "trips": 13 },
{ "station": "Station 03", "hour": "13:00", "trips": 15 },
{ "station": "Station 03", "hour": "14:00", "trips": 19 },
{ "station": "Station 03", "hour": "15:00", "trips": 28 },
{ "station": "Station 03", "hour": "16:00", "trips": 42 },
{ "station": "Station 03", "hour": "17:00", "trips": 53 },
{ "station": "Station 03", "hour": "18:00", "trips": 55 },
{ "station": "Station 03", "hour": "19:00", "trips": 34 },
{ "station": "Station 03", "hour": "20:00", "trips": 15 },
{ "station": "Station 03", "hour": "21:00", "trips": 5 },
{ "station": "Station 03", "hour": "22:00", "trips": 5 },
{ "station": "Station 03", "hour": "23:00", "trips": 2 },
{ "station": "Station 04", "hour": "00:00", "trips": 1 },
{ "station": "Station 04", "hour": "01:00", "trips": 2 },
{ "station": "Station 04", "hour": "02:00", "trips": 2 },
{ "station": "Station 04", "hour": "03:00", "trips": 2 },
{ "station": "Station 04", "hour": "04:00", "trips": 1 },
{ "station": "Station 04", "hour": "05:00", "trips": 6 },
{ "station": "Station 04", "hour": "06:00", "trips": 21 },
{ "station": "Station 04", "hour": "07:00", "trips": 45 },
{ "station": "Station 04", "hour": "08:00", "trips": 60 },
{ "station": "Station 04", "hour": "09:00", "trips": 53 },
{ "station": "Station 04", "hour": "10:00", "trips": 36 },
{ "station": "Station 04", "hour": "11:00", "trips": 32 },
{ "station": "Station 04", "hour": "12:00", "trips": 32 },
{ "station": "Station 04", "hour": "13:00", "trips": 39 },
{ "station": "Station 04", "hour": "14:00", "trips": 45 },
{ "station": "Station 04", "hour": "15:00", "trips": 50 },
{ "station": "Station 04", "hour": "16:00", "trips": 64 },
{ "station": "Station 04", "hour": "17:00", "trips": 76 },
{ "station": "Station 04", "hour": "18:00", "trips": 68 },
{ "station": "Station 04", "hour": "19:00", "trips": 43 },
{ "station": "Station 04", "hour": "20:00", "trips": 21 },
{ "station": "Station 04", "hour": "21:00", "trips": 12 },
{ "station": "Station 04", "hour": "22:00", "trips": 5 },
{ "station": "Station 04", "hour": "23:00", "trips": 1 },
{ "station": "Station 05", "hour": "00:00", "trips": 1 },
{ "station": "Station 05", "hour": "01:00", "trips": 0 },
{ "station": "Station 05", "hour": "02:00", "trips": 3 },
{ "station": "Station 05", "hour": "03:00", "trips": 4 },
{ "station": "Station 05", "hour": "04:00", "trips": 3 },
{ "station": "Station 05", "hour": "05:00", "trips": 9 },
{ "station": "Station 05", "hour": "06:00", "trips": 21 },
{ "station": "Station 05", "hour": "07:00", "trips": 48 },
{ "station": "Station 05", "hour": "08:00", "trips": 60 },
{ "station": "Station 05", "hour": "09:00", "trips": 50 },
{ "station": "Station 05", "hour": "10:00", "trips": 29 },
{ "station": "Station 05", "hour": "11:00", "trips": 14 },
{ "station": "Station 05", "hour": "12:00", "trips": 13 },
{ "station": "Station 05", "hour": "13:00", "trips": 17 },
{ "station": "Station 05", "hour": "14:00", "trips": 19 },
{ "station": "Station 05", "hour": "15:00", "trips": 29 },
{ "station": "Station 05", "hour": "16:00", "trips": 47 },
{ "station": "Station 05", "hour": "17:00", "trips": 63 },
{ "station": "Station 05", "hour": "18:00", "trips": 60 },
{ "station": "Station 05", "hour": "19:00", "trips": 39 },
{ "station": "Station 05", "hour": "20:00", "trips": 23 },
{ "station": "Station 05", "hour": "21:00", "trips": 7 },
{ "station": "Station 05", "hour": "22:00", "trips": 6 },
{ "station": "Station 05", "hour": "23:00", "trips": 4 },
{ "station": "Station 06", "hour": "00:00", "trips": 1 },
{ "station": "Station 06", "hour": "01:00", "trips": 4 },
{ "station": "Station 06", "hour": "02:00", "trips": 3 },
{ "station": "Station 06", "hour": "03:00", "trips": 3 },
{ "station": "Station 06", "hour": "04:00", "trips": 1 },
{ "station": "Station 06", "hour": "05:00", "trips": 10 },
{ "station": "Station 06", "hour": "06:00", "trips": 23 },
{ "station": "Station 06", "hour": "07:00", "trips": 50 },
{ "station": "Station 06", "hour": "08:00", "trips": 65 },
{ "station": "Station 06", "hour": "09:00", "trips": 50 },
{ "station": "Station 06", "hour": "10:00", "trips": 29 },
{ "station": "Station 06", "hour": "11:00", "trips": 16 },
{ "station": "Station 06", "hour": "12:00", "trips": 15 },
{ "station": "Station 06", "hour": "13:00", "trips": 16 },
{ "station": "Station 06", "hour": "14:00", "trips": 20 },
{ "station": "Station 06", "hour": "15:00", "trips": 33 },
{ "station": "Station 06", "hour": "16:00", "trips": 50 },
{ "station": "Station 06", "hour": "17:00", "trips": 67 },
{ "station": "Station 06", "hour": "18:00", "trips": 65 },
{ "station": "Station 06", "hour": "19:00", "trips": 44 },
{ "station": "Station 06", "hour": "20:00", "trips": 22 },
{ "station": "Station 06", "hour": "21:00", "trips": 9 },
{ "station": "Station 06", "hour": "22:00", "trips": 6 },
{ "station": "Station 06", "hour": "23:00", "trips": 3 },
{ "station": "Station 07", "hour": "00:00", "trips": 3 },
{ "station": "Station 07", "hour": "01:00", "trips": 1 },
{ "station": "Station 07", "hour": "02:00", "trips": 4 },
{ "station": "Station 07", "hour": "03:00", "trips": 0 },
{ "station": "Station 07", "hour": "04:00", "trips": 5 },
{ "station": "Station 07", "hour": "05:00", "trips": 10 },
{ "station": "Station 07", "hour": "06:00", "trips": 26 },
{ "station": "Station 07", "hour": "07:00", "trips": 53 },
{ "station": "Station 07", "hour": "08:00", "trips": 72 },
{ "station": "Station 07", "hour": "09:00", "trips": 59 },
{ "station": "Station 07", "hour": "10:00", "trips": 39 },
{ "station": "Station 07", "hour": "11:00", "trips": 30 },
{ "station": "Station 07", "hour": "12:00", "trips": 31 },
{ "station": "Station 07", "hour": "13:00", "trips": 36 },
{ "station": "Station 07", "hour": "14:00", "trips": 45 },
{ "station": "Station 07", "hour": "15:00", "trips": 54 },
{ "station": "Station 07", "hour": "16:00", "trips": 74 },
{ "station": "Station 07", "hour": "17:00", "trips": 87 },
{ "station": "Station 07", "hour": "18:00", "trips": 77 },
{ "station": "Station 07", "hour": "19:00", "trips": 51 },
{ "station": "Station 07", "hour": "20:00", "trips": 26 },
{ "station": "Station 07", "hour": "21:00", "trips": 10 },
{ "station": "Station 07", "hour": "22:00", "trips": 3 },
{ "station": "Station 07", "hour": "23:00", "trips": 3 },
{ "station": "Station 08", "hour": "00:00", "trips": 2 },
{ "station": "Station 08", "hour": "01:00", "trips": 0 },
{ "station": "Station 08", "hour": "02:00", "trips": 4 },
{ "station": "Station 08", "hour": "03:00", "trips": 5 },
{ "station": "Station 08", "hour": "04:00", "trips": 5 },
{ "station": "Station 08", "hour": "05:00", "trips": 8 },
{ "station": "Station 08", "hour": "06:00", "trips": 30 },
{ "station": "Station 08", "hour": "07:00", "trips": 56 },
{ "station": "Station 08", "hour": "08:00", "trips": 74 },
{ "station": "Station 08", "hour": "09:00", "trips": 58 },
{ "station": "Station 08", "hour": "14:00", "trips": 18 },
{ "station": "Station 08", "hour": "15:00", "trips": 34 },
{ "station": "Station 08", "hour": "16:00", "trips": 58 },
{ "station": "Station 08", "hour": "17:00", "trips": 74 },
{ "station": "Station 08", "hour": "18:00", "trips": 72 },
{ "station": "Station 08", "hour": "19:00", "trips": 47 },
{ "station": "Station 08", "hour": "20:00", "trips": 21 },
{ "station": "Station 08", "hour": "21:00", "trips": 8 },
{ "station": "Station 08", "hour": "22:00", "trips": 6 },
{ "station": "Station 08", "hour": "23:00", "trips": 4 },
{ "station": "Station 09", "hour": "00:00", "trips": 2 },
{ "station": "Station 09", "hour": "01:00", "trips": 4 },
{ "station": "Station 09", "hour": "02:00", "trips": 4 },
{ "station": "Station 09", "hour": "03:00", "trips": 2 },
{ "station": "Station 09", "hour": "04:00", "trips": 6 },
{ "station": "Station 09", "hour": "05:00", "trips": 9 },
{ "station": "Station 09", "hour": "06:00", "trips": 31 },
{ "station": "Station 09", "hour": "07:00", "trips": 57 },
{ "station": "Station 09", "hour": "08:00", "trips": 75 },
{ "station": "Station 09", "hour": "09:00", "trips": 59 },
{ "station": "Station 09", "hour": "10:00", "trips": 33 },
{ "station": "Station 09", "hour": "11:00", "trips": 15 },
{ "station": "Station 09", "hour": "12:00", "trips": 13 },
{ "station": "Station 09", "hour": "13:00", "trips": 15 },
{ "station": "Station 09", "hour": "14:00", "trips": 19 },
{ "station": "Station 09", "hour": "15:00", "trips": 37 },
{ "station": "Station 09", "hour": "16:00", "trips": 56 },
{ "station": "Station 09", "hour": "17:00", "trips": 76 },
{ "station": "Station 09", "hour": "18:00", "trips": 74 },
{ "station": "Station 09", "hour": "19:00", "trips": 50 },
{ "station": "Station 09", "hour": "20:00", "trips": 25 },
{ "station": "Station 09", "hour": "21:00", "trips": 9 },
{ "station": "Station 09", "hour": "22:00", "trips": 3 },
{ "station": "Station 09", "hour": "23:00", "trips": 2 },
{ "station": "Station 10", "hour": "00:00", "trips": 1 },
{ "station": "Station 10", "hour": "01:00", "trips": 2 },
{ "station": "Station 10", "hour": "02:00", "trips": 4 },
{ "station": "Station 10", "hour": "03:00", "trips": 2 },
{ "station": "Station 10", "hour": "04:00", "trips": 3 },
{ "station": "Station 10", "hour": "05:00", "trips": 13 },
{ "station": "Station 10", "hour": "06:00", "trips": 30 },
{ "station": "Station 10", "hour": "07:00", "trips": 65 },
{ "station": "Station 10", "hour": "08:00", "trips": 83 },
{ "station": "Station 10", "hour": "09:00", "trips": 70 },
{ "station": "Station 10", "hour": "10:00", "trips": 47 },
{ "station": "Station 10", "hour": "11:00", "trips": 32 },
{ "station": "Station 10", "hour": "12:00", "trips": 30 },
{ "station": "Station 10", "hour": "13:00", "trips": 36 },
{ "station": "Station 10", "hour": "14:00", "trips": 46 },
{ "station": "Station 10", "hour": "15:00", "trips": 61 },
{ "station": "Station 10", "hour": "16:00", "trips": 80 },
{ "station": "Station 10", "hour": "17:00", "trips": 96 },
{ "station": "Station 10", "hour": "18:00", "trips": 87 },
{ "station": "Station 10", "hour": "19:00", "trips": 58 },
{ "station": "Station 10", "hour": "20:00", "trips": 28 },
{ "station": "Station 10", "hour": "21:00", "trips": 12 },
{ "station": "Station 10", "hour": "22:00", "trips": 6 },
{ "station": "Station 10", "hour": "23:00", "trips": 5 },
{ "station": "Station 11", "hour": "00:00", "trips": 3 },
{ "station": "Station 11", "hour": "01:00", "trips": 3 },
{ "station": "Station 11", "hour": "02:00", "trips": 3 },
{ "station": "Station 11", "hour": "03:00", "trips": 3 },
{ "station": "Station 11", "hour": "04:00", "trips": 6 },
{ "station": "Station 11", "hour": "05:00", "trips": 9 },
{ "station": "Station 11", "hour": "06:00", "trips": 31 },
{ "station": "Station 11", "hour": "07:00", "trips": 65 },
{ "station": "Station 11", "hour": "08:00", "trips": 84 },
{ "station": "Station 11", "hour": "09:00", "trips": 67 },
{ "station": "Station 11", "hour": "10:00", "trips": 37 },
{ "station": "Station 11", "hour": "11:00", "trips": 17 },
{ "station": "Station 11", "hour": "12:00", "trips": 13 },
{ "station": "Station 11", "hour": "13:00", "trips": 14 },
{ "station": "Station 11", "hour": "14:00", "trips": 23 },
{ "station": "Station 11", "hour": "15:00", "trips": 37 },
{ "station": "Station 11", "hour": "16:00", "trips": 61 },
{ "station": "Station 11", "hour": "17:00", "trips": 84 },
{ "station": "Station 11", "hour": "18:00", "trips": 82 },
{ "station": "Station 11", "hour": "19:00", "trips": 55 },
{ "station": "Station 11", "hour": "20:00", "trips": 26 },
{ "station": "Station 11", "hour": "21:00", "trips": 12 },
{ "station": "Station 11", "hour": "22:00", "trips": 2 },
{ "station": "Station 11", "hour": "23:00", "trips": 2 },
{ "station": "Station 12", "hour": "00:00", "trips": 1 },
{ "station": "Station 12", "hour": "01:00", "trips": 3 },
{ "station": "Station 12", "hour": "02:00", "trips": 2 },
{ "station": "Station 12", "hour": "03:00", "trips": 3 },
{ "station": "Station 12", "hour": "04:00", "trips": 2 },
{ "station": "Station 12", "hour": "05:00", "trips": 10 },
{ "station": "Station 12", "hour": "06:00", "trips": 33 },
{ "station": "Station 12", "hour": "07:00", "trips": 67 },
{ "station": "Station 12", "hour": "08:00", "trips": 87 },
{ "station": "Station 12", "hour": "09:00", "trips": 68 },
{ "station": "Station 12", "hour": "10:00", "trips": 36 },
{ "station": "Station 12", "hour": "11:00", "trips": 21 },
{ "station": "Station 12", "hour": "12:00", "trips": 16 },
{ "station": "Station 12", "hour": "13:00", "trips": 18 },
{ "station": "Station 12", "hour": "14:00", "trips": 22 },
{ "station": "Station 12", "hour": "15:00", "trips": 38 },
{ "station": "Station 12", "hour": "16:00", "trips": 65 },
{ "station": "Station 12", "hour": "17:00", "trips": 89 },
{ "station": "Station 12", "hour": "18:00", "trips": 89 },
{ "station": "Station 12", "hour": "19:00", "trips": 59 },
{ "station": "Station 12", "hour": "20:00", "trips": 30 },
{ "station": "Station 12", "hour": "21:00", "trips": 10 },
{ "station": "Station 12", "hour": "22:00", "trips": 4 },
{ "station": "Station 12", "hour": "23:00", "trips": 1 },
{ "station": "Station 13", "hour": "00:00", "trips": 1 },
{ "station": "Station 13", "hour": "01:00", "trips": 0 },
{ "station": "Station 13", "hour": "02:00", "trips": 3 },
{ "station": "Station 13", "hour": "03:00", "trips": 0 },
{ "station": "Station 13", "hour": "04:00", "trips": 3 },
{ "station": "Station 13", "hour": "05:00", "trips": 11 },
{ "station": "Station 13", "hour": "06:00", "trips": 37 },
{ "station": "Station 13", "hour": "07:00", "trips": 72 },
{ "station": "Station 13", "hour": "08:00", "trips": 94 },
{ "station": "Station 13", "hour": "09:00", "trips": 81 },
{ "station": "Station 13", "hour": "10:00", "trips": 51 },
{ "station": "Station 13", "hour": "11:00", "trips": 33 },
{ "station": "Station 13", "hour": "12:00", "trips": 32 },
{ "station": "Station 13", "hour": "13:00", "trips": 41 },
{ "station": "Station 13", "hour": "14:00", "trips": 45 },
{ "station": "Station 13", "hour": "15:00", "trips": 63 },
{ "station": "Station 13", "hour": "16:00", "trips": 86 },
{ "station": "Station 13", "hour": "17:00", "trips": 110 },
{ "station": "Station 13", "hour": "18:00", "trips": 103 },
{ "station": "Station 13", "hour": "19:00", "trips": 67 },
{ "station": "Station 13", "hour": "20:00", "trips": 35 },
{ "station": "Station 13", "hour": "21:00", "trips": 12 },
{ "station": "Station 13", "hour": "22:00", "trips": 3 },
{ "station": "Station 13", "hour": "23:00", "trips": 3 },
{ "station": "Station 14", "hour": "00:00", "trips": 0 },
{ "station": "Station 14", "hour": "01:00", "trips": 1 },
{ "station": "Station 14", "hour": "02:00", "trips": 4 },
{ "station": "Station 14", "hour": "03:00", "trips": 3 },
{ "station": "Station 14", "hour": "04:00", "trips": 4 },
{ "station": "Station 14", "hour": "05:00", "trips": 12 },
{ "station": "Station 14", "hour": "06:00", "trips": 37 },
{ "station": "Station 14", "hour": "07:00", "trips": 73 },
{ "station": "Station 14", "hour": "08:00", "trips": 94 },
{ "station": "Station 14", "hour": "09:00", "trips": 79 },
{ "station": "Station 14", "hour": "10:00", "trips": 39 },
{ "station": "Station 14", "hour": "11:00", "trips": 21 },
{ "station": "Station 14", "hour": "12:00", "trips": 13 },
{ "station": "Station 14", "hour": "13:00", "trips": 15 },
{ "station": "Station 14", "hour": "14:00", "trips": 23 },
{ "station": "Station 14", "hour": "15:00", "trips": 39 },
{ "station": "Station 14", "hour": "16:00", "trips": 73 },
{ "station": "Station 14", "hour": "17:00", "trips": 99 },
{ "station": "Station 14", "hour": "18:00", "trips": 95 },
{ "station": "Station 14", "hour": "19:00", "trips": 67 },
{ "station": "Station 14", "hour": "20:00", "trips": 30 },
{ "station": "Station 14", "hour": "21:00", "trips": 10 },
{ "station": "Station 14", "hour": "22:00", "trips": 5 },
{ "station": "Station 14", "hour": "23:00", "trips": 5 },
{ "station": "Station 15", "hour": "00:00", "trips": 2 },
{ "station": "Station 15", "hour": "01:00", "trips": 2 },
{ "station": "Station 15", "hour": "02:00", "trips": 2 },
{ "station": "Station 15", "hour": "03:00", "trips": 5 },
{ "station": "Station 15", "hour": "04:00", "trips": 2 },
{ "station": "Station 15", "hour": "05:00", "trips": 14 },
{ "station": "Station 15", "hour": "06:00", "trips": 39 },
{ "station": "Station 15", "hour": "07:00", "trips": 79 },
{ "station": "Station 15", "hour": "08:00", "trips": 98 },
{ "station": "Station 15", "hour": "09:00", "trips": 82 },
{ "station": "Station 15", "hour": "10:00", "trips": 45 },
{ "station": "Station 15", "hour": "11:00", "trips": 22 },
{ "station": "Station 15", "hour": "12:00", "trips": 16 },
{ "station": "Station 15", "hour": "13:00", "trips": 18 },
{ "station": "Station 15", "hour": "14:00", "trips": 22 },
{ "station": "Station 15", "hour": "15:00", "trips": 40 },
{ "station": "Station 15", "hour": "16:00", "trips": 71 },
{ "station": "Station 15", "hour": "17:00", "trips": 103 },
{ "station": "Station 15", "hour": "18:00", "trips": 100 },
{ "station": "Station 15", "hour": "19:00", "trips": 69 },
{ "station": "Station 15", "hour": "20:00", "trips": 30 },
{ "station": "Station 15", "hour": "21:00", "trips": 13 },
{ "station": "Station 15", "hour": "22:00", "trips": 4 },
{ "station": "Station 15", "hour": "23:00", "trips": 3 },
{ "station": "Station 16", "hour": "00:00", "trips": 4 },
{ "station": "Station 16", "hour": "01:00", "trips": 3 },
{ "station": "Station 16", "hour": "02:00", "trips": 1 },
{ "station": "Station 16", "hour": "03:00", "trips": 5 },
{ "station": "Station 16", "hour": "04:00", "trips": 4 },
{ "station": "Station 16", "hour": "05:00", "trips": 14 },
{ "station": "Station 16", "hour": "06:00", "trips": 42 },
{ "station": "Station 16", "hour": "07:00", "trips": 80 },
{ "station": "Station 16", "hour": "08:00", "trips": 107 },
{ "station": "Station 16", "hour": "09:00", "trips": 92 },
{ "station": "Station 16", "hour": "10:00", "trips": 53 },
{ "station": "Station 16", "hour": "11:00", "trips": 35 },
{ "station": "Station 16", "hour": "12:00", "trips": 33 },
{ "station": "Station 16", "hour": "13:00", "trips": 39 },
{ "station": "Station 16", "hour": "14:00", "trips": 49 },
{ "station": "Station 16", "hour": "15:00", "trips": 66 },
{ "station": "Station 16", "hour": "16:00", "trips": 96 },
{ "station": "Station 16", "hour": "17:00", "trips": 118 },
{ "station": "Station 16", "hour": "18:00", "trips": 111 },
{ "station": "Station 16", "hour": "19:00", "trips": 74 },
{ "station": "Station 16", "hour": "20:00", "trips": 34 },
{ "station": "Station 16", "hour": "21:00", "trips": 15 },
{ "station": "Station 16", "hour": "22:00", "trips": 6 },
{ "station": "Station 16", "hour": "23:00", "trips": 1 },
{ "station": "Station 17", "hour": "00:00", "trips": 1 },
{ "station": "Station 17", "hour": "01:00", "trips": 2 },
{ "station": "Station 17", "hour": "02:00", "trips": 5 },
{ "station": "Station 17", "hour": "03:00", "trips": 4 },
{ "station": "Station 17", "hour": "04:00", "trips": 2 },
{ "station": "Station 17", "hour": "05:00", "trips": 14 },
{ "station": "Station 17", "hour": "06:00", "trips": 42 },
{ "station": "Station 17", "hour": "07:00", "trips": 82 },
{ "station": "Station 17", "hour": "08:00", "trips": 108 },
{ "station": "Station 17", "hour": "09:00", "trips": 89 },
{ "station": "Station 17", "hour": "10:00", "trips": 46 },
{ "station": "Station 17", "hour": "11:00", "trips": 20 },
{ "station": "Station 17", "hour": "12:00", "trips": 14 },
{ "station": "Station 17", "hour": "13:00", "trips": 17 },
{ "station": "Station 17", "hour": "14:00", "trips": 24 },
{ "station": "Station 17", "hour": "15:00", "trips": 45 },
{ "station": "Station 17", "hour": "16:00", "trips": 78 },
{ "station": "Station 17", "hour": "17:00", "trips": 111 },
{ "station": "Station 17", "hour": "18:00", "trips": 107 },
{ "station": "Station 17", "hour": "19:00", "trips": 71 },
{ "station": "Station 17", "hour": "20:00", "trips": 35 },
{ "station": "Station 17", "hour": "21:00", "trips": 15 },
{ "station": "Station 17", "hour": "22:00", "trips": 5 },
{ "station": "Station 17", "hour": "23:00", "trips": 3 },
{ "station": "Station 18", "hour": "00:00", "trips": 1 },
{ "station": "Station 18", "hour": "01:00", "trips": 5 },
{ "station": "Station 18", "hour": "02:00", "trips": 4 },
{ "station": "Station 18", "hour": "03:00", "trips": 2 },
{ "station": "Station 18", "hour": "04:00", "trips": 7 },
{ "station": "Station 18", "hour": "05:00", "trips": 12 },
{ "station": "Station 18", "hour": "06:00", "trips": 42 },
{ "station": "Station 18", "hour": "07:00", "trips": 87 },
{ "station": "Station 18", "hour": "08:00", "trips": 114 },
{ "station": "Station 18", "hour": "09:00", "trips": 87 },
{ "station": "Station 18", "hour": "10:00", "trips": 48 },
{ "station": "Station 18", "hour": "11:00", "trips": 22 },
{ "station": "Station 18", "hour": "12:00", "trips": 15 },
{ "station": "Station 18", "hour": "13:00", "trips": 16 },
{ "station": "Station 18", "hour": "14:00", "trips": 23 },
{ "station": "Station 18", "hour": "15:00", "trips": 42 },
{ "station": "Station 18", "hour": "16:00", "trips": 82 },
{ "station": "Station 18", "hour": "17:00", "trips": 115 },
{ "station": "Station 18", "hour": "18:00", "trips": 108 },
{ "station": "Station 18", "hour": "19:00", "trips": 76 },
{ "station": "Station 18", "hour": "20:00", "trips": 35 },
{ "station": "Station 18", "hour": "21:00", "trips": 14 },
{ "station": "Station 18", "hour": "22:00", "trips": 6 },
{ "station": "Station 18", "hour": "23:00", "trips": 3 }
],
"x": "hour",
"y": "station",
"value": "trips",
"highlight": "Station 18",
"height": 460,
"title": "Trips started per hour by station",
"subtitle": "Weekday average, 18 stations. Station 18 is highlighted. Station 08 has no data from 10:00 to 13:00.",
"note": "Illustrative data"
}Render with import { Insight } from "insightcharts" and <Insight spec={spec} />. Nested specs resolve by name; nothing else to import.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| xrequired | string | Column field: a category or a date. | |
| yrequired | string | Row field. | |
| valuerequired | string | Numeric field that colours each cell. One data row per cell. | |
| diverging | boolean | false | Diverging palette centred on midpoint, for values with a meaningful middle. |
| midpoint | number | 0 | Centre of the diverging scale. |
| labels | boolean | Print the value in each cell. Default: on when cells are large enough. | |
| sort | "none" | "asc" | "desc" | "none" | Order rows by their total. |
| domain | [number, number] | Fix the ends of the colour scale. |
Common chart props 29
Every chart built with defineChart accepts these on top of its own props.
| Prop | Type | Description |
|---|---|---|
| data | DataInput | Rows, CSV text, a URL, { url, path }, an async function, or an Arrow-style table. Omit inside <InsightData>. |
| transform | Transform | Transform[] | A pipeline of transforms applied before drawing. |
| title | string | The title. One plain statement of what the data shows, with the number and the period ("Monthly churn fell from 4.2% to 2.1% in 2024"), or a plain label ("Monthly churn, 2024"). One clause, no figures of speech. |
| subtitle | string | Measure, unit, population, period. |
| source | string | Data source, shown as "Source: ...". |
| note | string | Method notes or caveats. |
| height | number | string | CSS height of the plot. Default 360. |
| aspect | number | Width / height. Overrides height. |
| highlight | string | string[] | The entity (or entities) the title is about. Every other series is drawn in grey. |
| annotations | Annotation[] | Reference lines, shaded bands and callouts, in data coordinates. |
| format | FormatSpec | How to print values: "compact", "percent", "currency:USD", "{value} kg", Intl options, or a function. |
| legend | boolean | Show the legend. Default: shown when there are two or more series. |
| select | boolean | string | Make marks clickable to filter. Inside <InsightData> the selection filters every other chart. Pass a field name, or true to use the chart's category field. |
| onSelect | (values: string[], field: string) => void | Called with the selected values whenever the selection changes. |
| option | EChartsOption | ((option: EChartsOption, ctx: BuildContext) => EChartsOption) | Deep-merged over the generated ECharts option, or a function that receives and returns it. Use it for ECharts settings no prop covers. |
| theme | ThemeInput | A theme, or a partial set of tokens merged over the surrounding theme, for this chart only. |
| mode | ModeInput | "auto" (default) follows the page, "system" follows the OS, or force "light" / "dark". |
| renderer | RendererInput | "auto" (default) uses SVG for light charts and canvas for heavy ones. |
| animate | boolean | Set false to disable animation. Reduced-motion preferences are always respected. |
| lazy | boolean | Mount the chart only when it scrolls near the viewport. Default true. |
| group | string | Link tooltips with other charts sharing this group id. |
| exportable | boolean | ExportFormat[] | Show an export menu: true or a list of formats from png, jpeg, svg, pdf, csv, json. |
| table | boolean | Show a collapsible "View data" table under the chart. |
| alt | string | Accessible description: the chart type and measures, then the main pattern and the notable values. |
| id | string | Stable id for this chart's selection in the shared store. |
| onEvents | Record<string, ChartEventHandler> | ECharts event handlers, e.g. { click: (params, chart) => {} }. Prefix a name with zr: to bind to the canvas itself. |
| onReady | (chart: EChartsInstance) => void | Called with the ECharts instance once it is created. |
| className | string | Class name for the outer <figure>. |
| style | CSSProperties | Inline style for the outer <figure>. |