Best Data Viz
Distribution

Bee Swarm Plot

Uses a d3-force simulation to displace overlapping points outward from the value axis, so every observation stays visible and the swarm width encodes local density. Unlike a strip/jitter plot (random scatter) it is deterministic and density-aware; unlike a violin plot (kernel estimate) it preserves exact values.

Assessment Scores by Group

Each dot is one participant

View data (75 rows)
Chart data table: Assessment Scores by Group
GroupScore
A72
A68
A81
A77
A85
A64
A90
A74
A79
A71
A83
A76
A69
A87
A73
A78
A75
A70
A82
A80
A76
A74
A79
A77
A75
B55
B62
B48
B70
B59
B66
B43
B58
B64
B52
B60
B56
B49
B63
B57
B61
B54
B67
B51
B65
B53
B60
B58
B62
B56
C88
C92
C95
C84
C97
C78
C89
C91
C86
C94
C82
C90
C87
C93
C85
C88
C91
C89
C86
C92
C90
C87
C93
C88
C89
Make a bee swarm plot with your data

Use a bee swarm plot when…

  • Medium datasets (20–200 points per group) where every observation must be visible
  • Comparing distributions across 2–5 groups when you want both individual values and density shape
  • When random jitter would mislead - bee swarm displaces points in a principled, non-overlapping way

Avoid when…

  • Large datasets (>500 points per group) - use violin or density plot instead
  • When only summary statistics matter - use box plot
  • Audiences unfamiliar with force-layout charts - prefer strip/jitter or box plot

Data it needs

PropertyValue
Min Rows10
Min Columns2
Column Types
stringnumber

Visual anatomy

Marks
circle
Channels
position-yposition-x (force-displaced)
Axes
x-categoricaly-quantitative

Guiding principles

Consider instead

Common mistakes

  • Dot radius too large, causing excessive lateral displacement that distorts perceived density

  • Forgetting to sort or label groups meaningfully

  • Confusing bee swarm with random jitter - the horizontal spread here encodes density, not noise

History

Evolved from Wilkinson's dot plot algorithm; the force-displacement approach was popularized by the D3 beeswarm plugin and the R beeswarm package.

Accessibility notes

Provide group-level summary statistics (median, range) as text. Use distinct group colors with sufficient contrast.

Related reading

Got data? Let's see what works.

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