Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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());

Tip

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.