Time SeriesIntermediate

Lasagna Plot

Stacked rows of colour-coded cells — one row per entity, one column per time step — that let you compare dozens of time series simultaneously without the spaghetti of overlapping lines.

// 01 — The chart

What it looks like

Example — Monthly temperature by cityJan – Dec
NYCLondonTokyoSydneyDubaiJFMAMJJASOND

A lasagna plot comparing monthly temperatures across five cities. Darker cells indicate higher temperatures. Southern-hemisphere cities (Sydney) show inverted seasonality.

// 02 — Definition

What is a lasagna plot?

A lasagna plot is a heatmap organized as rows of time series. Each row represents an entity (person, city, sensor), each column is a time step, and colour intensity encodes the variable’s value.

The name comes from the layered, rectangular appearance — stacked colour strips that resemble lasagna noodles. It was coined in the medical statistics community for tracking patient lab values over time.

Lasagna plots solve the spaghetti problem: when you plot 20+ line charts on the same axes, lines overlap and become unreadable. By encoding values as colour instead of position, a lasagna plot can show hundreds of time series compactly.

// 03 — Anatomy

Parts of a lasagna plot

ABCDAB
A — Cell: Each rectangle encodes one value at one time step for one entity via colour intensity
B — Row: A full horizontal strip represents one entity's complete time series

// 04 — Usage

When to use it — and when not to

✓Use a lasagna plot when…
  • Comparing 10–200 time series that would overlap as line charts
  • You want to reveal clusters of similar temporal patterns
  • Tracking patient lab values, sensor readings, or employee metrics over time
  • Row ordering matters — sorting rows by a summary stat can reveal structure
  • Your data is dense (few missing values) on a regular time grid
×Avoid a lasagna plot when…
  • Precise value reading matters — colour intensity is imprecise
  • You have only 2–3 time series — just use line charts
  • Time steps are irregular — gaps create confusing blank cells
  • Your audience is unfamiliar with heatmap-style encodings
  • The variable is categorical, not numeric

// 05 — Reading guide

How to read a lasagna plot

1

Check the colour legend

Understand the mapping from colour intensity to value. Light usually means low; dark means high.

2

Scan rows for outliers

Look for rows that are uniformly dark or light — these entities behave differently from the rest.

3

Look for vertical stripes

Columns that are uniformly dark indicate time points where all entities had high values (e.g. a system-wide event).

4

Check row ordering

If rows are sorted (e.g. by average value), the gradient from top to bottom reveals ranking.

5

Look for temporal patterns within rows

Repeating dark-light-dark patterns within a row suggest periodicity for that entity.

// 06 — Data format

What data you need

A matrix with entities as rows and time steps as columns. Each cell is a numeric value. Alternatively: long-format with entity, date, and value columns.

// 07 — Construction

How to build one

Step 1: Arrange data as a matrix: one row per entity, one column per time step.

Step 2: Map values to a sequential colour scale (e.g. white → dark red).

Step 3: Draw each cell as a coloured rectangle. Use thin gaps or borders between rows.

Step 4: Sort rows by a meaningful criterion (average, peak, or cluster) to reveal patterns.

// 08 — Common mistakes

Mistakes to avoid

Random row ordering

Unsorted rows hide patterns. Always sort rows by a summary statistic or cluster assignment.

Rainbow colour scales

Rainbow scales introduce perceptual artefacts. Use sequential single-hue or diverging scales.

Too many time steps

When columns are sub-pixel wide, the chart becomes noise. Aggregate to a coarser granularity.

Missing legend

Colour intensity is meaningless without a legend mapping it to actual values.

// 09 — Real-world examples

Where you’ll see them

Clinical trials

Tracking patient lab results (blood pressure, cholesterol) over visit dates — each row is a patient.

Server monitoring

CPU utilisation across hundreds of servers, with rows sorted by average load.

Sports analytics

Player performance metrics across games in a season, with rows sorted by total contribution.

// 10 — Quick reference

Key facts

Also known asLasagna chart, time-series heatmap
CategoryTime series
DifficultyIntermediate
Best for10–200 entities with regular time steps
Key trade-offScales to many series but sacrifices precise value reading

// 11 — Accessibility

Making it accessible

Use a colourblind-safe sequential palette (e.g. viridis). Add tooltips showing exact values on hover. Provide a downloadable data table. Use ARIA labels to summarise overall patterns (e.g. “highest values concentrated in summer months”).

// 12 — Variations

Common variations

Clustered lasagna

Rows grouped by cluster membership, with divider lines between groups.

Diverging lasagna

Uses a diverging colour scale to show values above and below a reference (e.g. mean).

Sorted lasagna

Rows re-ordered by a summary statistic so similar entities are adjacent.

Interactive lasagna

Hover reveals exact values; click a row to show its line chart overlay.

// 13 — FAQs

Frequently asked questions

What is a lasagna plot?+

A lasagna plot is a heatmap organized as rows of time series. Each row represents an entity (person, city, sensor), each column is a time step, and colour intensity encodes the variable's value.

When should you use a lasagna plot?+

Use a lasagna plot when comparing 10–200 time series that would overlap as line charts. It also works well when you want to reveal clusters of similar temporal patterns, and when tracking patient lab values, sensor readings, or employee metrics over time.

When should you avoid a lasagna plot?+

Avoid a lasagna plot when precise value reading matters — colour intensity is imprecise. It is also a poor fit when you have only 2–3 time series — just use line charts, or when time steps are irregular — gaps create confusing blank cells.

What data do you need to make a lasagna plot?+

A matrix with entities as rows and time steps as columns. Each cell is a numeric value. Alternatively: long-format with entity, date, and value columns.

How is a lasagna plot different from a heatmap?+

Both a lasagna plot and a heatmap can look similar at first glance, but they answer different questions. Reach for a lasagna plot when the comparisons and patterns it was designed to reveal match what you need to communicate, and choose a heatmap when its particular strengths better fit your data and audience.

What is another name for a lasagna plot?+

Lasagna Plot is also known as Lasagna chart, time-series heatmap. The name varies between fields, but the visualisation technique is the same.

What size of dataset works best for a lasagna plot?+

Lasagna Plot works best for 10–200 entities with regular time steps. Outside that range the chart either looks empty or becomes too cluttered to read clearly.

Are lasagna plots accessible to screen readers?+

Use a colourblind-safe sequential palette (e.g. viridis). Add tooltips showing exact values on hover. Provide a downloadable data table. Use ARIA labels to summarise overall patterns (e.g. "highest values concentrated in summer months").