Kapitel 5: Zeitreihen ohne Handarbeit
Ein Raster von Hand zu füllen ist bei acht mal acht Zellen zumutbar. Bei einem Jahr sind es 371, und die Zuordnung von Zeitstempel zu Zelle ist genau die Art Rechnung, bei der Sommerzeit und Wochenanfang Fehler erzeugen, die niemand sieht.
Dafür gibt es die Aggregatoren. Sie liegen in einem eigenen Einstiegspunkt, damit niemand sie mitlädt, der sie nicht braucht:
import { presets } from 'mlc-isometric-heatmap/presets';
const events = [
{ timestamp: new Date('2026-06-09T10:15:00Z'), value: 5 },
{ timestamp: new Date('2026-06-09T15:30:00Z'), value: 20 },
];24 Stunden gegen Wochentage
const grid = presets.aggregate24h(events, { startOfWeek: 1 });24 Spalten, 7 Zeilen. startOfWeek: 1 beginnt am Montag — die Vorgabe des
Sonntags stammt aus dem amerikanischen Kalender und ist hierzulande fast immer
falsch.
Das ist die Ansicht für Tagesrhythmen: wann läuft die Anlage, wann ist es still, und unterscheidet sich das Wochenende.
Ein Monat
const grid = presets.aggregateMonth(events, { year: 2026, month: 5 });Wochen als Spalten, Wochentage als Zeilen. Der Monat ist die Ansicht, in der ein Mensch noch jeden einzelnen Tag wiederfindet.
Ein halbes Jahr
Zwischen Monat und Jahr klafft eine Lücke: 26 Wochen sind zu viel für die Monatsansicht und zu wenig, um im Jahresraster als Muster zu erscheinen. Dafür gibt es die Sechsmonatsvorlagen, wahlweise mit monatlichen Trennern.
Ein Jahr
const grid = presets.aggregateYear(events, { year: 2026 });53 Wochen gegen 7 Wochentage — die Form, die man von Beitragsgrafiken kennt, hier
mit Höhe. Bei dieser Dichte sind Beschriftungen oft mehr Störung als Hilfe;
showRowLabels: false nimmt sie weg.
Mehrere Gruppen nebeneinander
Vergleicht man Zeiträume oder Standorte, lassen sich mehrere Raster zu einer Grafik zusammensetzen, statt sie nebeneinanderzulegen. Der Vorteil ist ein gemeinsamer Massstab — getrennte Grafiken haben getrennte Maxima, und der Vergleich täuscht.