Part of a whole

100% stacked area chart

Shows changing component shares by normalising each time point to 100%.

  • Chart
  • Composition
  • Trend over time

What it answers

How do shares evolve independently of totals?

Shape
Stacked bands of constant total height
What it shows
Share gains and losses.

Example

The question

How has the share of orders by channel shifted through the year?

Share of orders by channel, 2025

Share of orders by channel, 2025Online grows from 45% to 54% of orders; stores fall from 36% to 29%; partners stay near 17%.0%20%40%60%80%100%JanFebMarAprMayJunJulAugSepOctNovDecPartnersStoresOnline
Share of orders by channel, 2025Online grows from 45% to 54% of orders; stores fall from 36% to 29%; partners stay near 17%.OnlineStoresPartners0%20%40%60%80%100%JanMarMayJulSepNov
Online grows from 45% to 54% of orders; stores fall from 36% to 29%; partners stay near 17%.

Illustrative data. It belongs to no company.

When to use it

Use it when

Changing composition across many periods.

Avoid it when

When absolute quantities or changes in total are required.

How to read it

Read each vertical slice as 100% and compare band thicknesses.

Note

Each time point needs a positive total.

The data you need

Layout
Long table
Fields
Time: date/datetime; Series: text; Value: number
One row is
One series observation at one time. What is the grain?
Rules
Sort time within series. Resolve duplicate time-series pairs and align series before stacking.
Optional
Wide alternative: Time,A,B with one row per time.
Preparation
Align series, sum each time slice, then divide each component by that slice total.
Units
Each time slice totals 100%; denominator is the sum of included component values at that time.
Example of the input layout: Long tableA long table: one row per observation, few columns. New data adds rows.TimeSeriesValueAABBC
A long table: one row per observation, few columns. New data adds rows.

Worked example

Data Jan: A30, B45; Feb: A34, B40. Convert to shares. A rises 40% to 45.9%; this alone does not show total growth.

TimeSeriesValue
2026-01-01A30
2026-01-01B45
2026-02-01A34
2026-02-01B40