Best Data Viz
Comparison

Butterfly Chart

Back-to-back horizontal bars for any two-sided comparison, with the category labels in the center gutter.

Approve vs Disapprove by Policy

National poll, n=1,200

View data (6 rows)
Chart data table: Approve vs Disapprove by Policy
ApproveDisapprovePolicy
7122Healthcare
6625Education
6228Climate action
4841Tax reform
4439Trade
3852Immigration
Make a butterfly chart with your data

Use a butterfly chart when…

  • Two contrasting metrics across the same categories
  • Approve vs disapprove, revenue vs cost, before vs after
  • When the symmetry of the comparison is the message

Avoid when…

  • Demographic age × sex breakdown (use population pyramid)
  • More than two series (use grouped bar)
  • Single metric (use bar)

Data it needs

PropertyValue
Min Rows3
Min Columns3
Column Types
stringnumbernumber

Visual anatomy

Marks
rectangle
Channels
length-x (mirrored)position-ycolor-hue
Axes
x-quantitative (mirrored)y-categorical

Guiding principles

Consider instead

Common mistakes

  • Using different x-axis scales on the two sides

  • Squeezing the center gutter so labels are unreadable

  • Relying on color alone to distinguish the two sides

History

Generalization of the population pyramid (Francis Walker, 1874) to non-demographic A/B comparisons such as approve/disapprove polling or revenue/cost ledgers.

Accessibility notes

Pair the two-side color encoding with a side label or pattern fill so color-vision-deficient readers can still tell the sides apart. Mirror axis labels on both sides for screen-reader clarity and provide a data table.

Related reading

Got data? Let's see what works.

Drop your CSV. You'll get a Butterfly Chart plus four alternatives - ranked by which one actually fits your data best.