Beeswarm · Diagram Design

The median hides the tail

A hundred and thirty-eight per-request latency samples for one checkout endpoint, one dot per request on a shared linear axis from zero. The median sits near 105 ms and looks perfectly healthy; the story is the three requests past 380 ms, because the p99 is what a customer at the wrong moment actually experiences.

The median hides the tail Beeswarm of 138 per-request latency samples for one checkout endpoint on a shared linear value axis from zero; vertical spread is packing only and carries no value, and three requests past 380 ms form the p99 tail. PER-REQUEST LATENCY, MS 0 100 200 300 400 REQ-77D3 REQ-09AA REQ-4C1F LEGEND ONE DOT = ONE REQUEST · VALUE AXIS 0–440 MS, LINEAR FROM ZERO · VERTICAL SPREAD IS PACKING, NOT A VALUE · ILLUSTRATIVE FIGURES, NOT MEASURED TRAFFIC req-4c1f · focal, the slowest request in the window request · vertical offset is packing only

The tail is the story

Read the swarm, not the middle

req-4c1f took 431 ms — four times the median — and it is one of three requests past 380 ms in a five-minute window. At this rate, roughly one checkout in fifty gets a visibly slow page, which is exactly the reading a single averaged number would have hidden.

Every unit keeps its mark

One dot = one request

No binning, no averaging: each request is its own dot at its exact value. Density reads as thickness — the swarm bulges where requests crowd — so the shape of the distribution and its outliers arrive in one glance.

The vertical axis says nothing

Packing, not a value

Dots dodge up and down only so they do not overlap; the offset is greedy packing at a fixed pitch and carries no meaning. A dot is never moved along the value axis to make room — crowding is data.