Lasagna plot
Pack many entity-time series into a single "lasagna" of horizontal heatmap rows — one entity per row, time across columns, colour shows value. Reads patterns across hundreds of entities that a multi-line chart spaghettis up.
The demo plots US polio incidence per 100 k population by state × half-year, 1952 → 1956. The Salk inactivated polio vaccine was approved 12 Apr 1955 and rolled out nationally that spring; every state's incidence collapses to near-zero in the two columns after the vaccine launch. The "before / after" contrast is the visual evidence that anchored the global eradication effort.
Source: Polio vaccine — Wikipedia
Public surface
use wisp_chart::heatmap::{LasagnaHeatmap, SequentialPalette};
let l = LasagnaHeatmap::new(
vec!["entity-1".into(), "entity-2".into(), /* ... */],
(0..24).map(|h| format!("{h:02}h")).collect(),
vec![
vec![/* 24 values */],
vec![/* ... */],
],
).palette(SequentialPalette::magma());
Cells render flush — no gap — which is what makes a lasagna "lasagna" rather than a table heatmap. The continuous stripe lets the eye scan an entity's trajectory across time without inter-cell scaffolding.