Part of a whole

100% stacked column chart

Normalises each column to 100% to compare composition across categories or periods.

  • Chart
  • Composition
  • Trend over time

What it answers

How does composition change over time?

Shape
Equal-height segmented columns
What it shows
Share shifts independent of changing totals.

Example

The question

How has the mix of contract types changed since 2022?

Staff by contract type, share of headcount

Staff by contract type, share of headcount2022: permanent 72%, fixed term 18%, contractors 10%; 2023: permanent 68%, fixed term 19%, contractors 13%; 2024: permanent 64%, fixed term 20%, contractors 16%; 2025: permanent 61%, fixed term 20%, contractors 19%.PermanentFixed termContractors0%20%40%60%80%100%202220232024202572%18%10%68%19%13%64%20%16%61%20%19%
Staff by contract type, share of headcount2022: permanent 72%, fixed term 18%, contractors 10%; 2023: permanent 68%, fixed term 19%, contractors 13%; 2024: permanent 64%, fixed term 20%, contractors 16%; 2025: permanent 61%, fixed term 20%, contractors 19%.PermanentFixed termContractors0%20%40%60%80%100%202220232024202572%18%10%68%19%13%64%20%16%61%20%19%
2022: permanent 72%, fixed term 18%, contractors 10%; 2023: permanent 68%, fixed term 19%, contractors 13%; 2024: permanent 64%, fixed term 20%, contractors 16%; 2025: permanent 61%, fixed term 20%, contractors 19%.

Illustrative data. It belongs to no company.

When to use it

Use it when

Comparing shares across periods.

Avoid it when

When readers need absolute growth or total amounts.

How to read it

Read each column as 100% and compare segment percentages over periods.

Note

Absolute totals are hidden.

The data you need

Layout
Long table
Fields
Category or ordered position: text/date; Series: text; Value: number
One row is
One series value within one category or position. What is the grain?
Rules
Use one value per category-series pair after aggregation. Define category and series order.
Optional
Wide alternative: Category,North,South with one row per category.
Preparation
Aggregate components per period/category and normalise each column to 100%. Preserve the unnormalised totals.
Units
Percent of each period/category column total. Counts behind different columns can differ.
Example of the input layout: Long tableA long table: one row per observation, few columns. New data adds rows.Category orSeriesValueAABBC
A long table: one row per observation, few columns. New data adds rows.

Worked example

Data Jan=(30,45), Feb=(34,40). Normalise columns. The first share rises from 40% to about 45.9%, despite a smaller total.

CategorySeriesValue
ANorth30
ASouth45
BNorth34
BSouth40