Problem
An average does not show whether values are tightly grouped, spread out, or split into distinct groups.
Solution
Divide the value range into intervals and show how many observations fall in each one. Label the measure, intervals, and count or percentage axis.
Choose intervals that reveal useful structure without making random variation look like a pattern. Make the boundaries available, especially when the source has already grouped the data.
Use consistent intervals and scales for comparisons. Keep unusually large or small values visible, or clearly label any limits that exclude them.
Use when
People need to understand the spread, clusters, or extreme values in a set of measurements.
Don’t use when
The counts are small, where a histogram is a bar chart with a misleading name. Or when the change over time is the point, in which case the histogram is one frame of a film and a heatmap is the film.
Trade-offs
A histogram combines the selected time period and can hide when a change happened. Interval choices can merge or split apparent groups. A long tail can compress the rest of the chart, while clipping it hides the extremes.
Checklist
- How many buckets, and who chose that number?
- Would a different bucket count merge or split a mode that matters?
- Are the bucket edges shown, and do any of them fall on a value people care about, like a timeout?
- Is the x-axis linear when the data is skewed, and would a log axis show more?
- Is the tail clipped, and does the chart say so?
- Is the y-axis a count or a proportion, and does that match the neighbouring panels?
- If two histograms sit side by side, do they share bucket edges and axis ranges?
- Are these buckets computed at query time or fixed at instrumentation time?
- Does the panel report the sample size?
- Would a heatmap answer the viewer’s actual question by adding time back?
Compare
Grafana exposes bucket count, size and offset as panel options, which is honest about the decision and also means two panels of the same metric can disagree about its shape with nothing on screen to explain why. Prometheus moves the argument upstream: classic histograms fix the buckets at instrumentation time, native histograms hold a relative resolution instead, so the same query returns a usefully different answer depending on which the service emits. Honeycomb keeps raw events rather than pre-aggregating, so a distribution is something you ask for at query time over whatever dimension you just thought of, rather than something you predicted a month ago. Datadog leans on distribution metrics with globally accurate percentiles, which trades the ability to see the shape for the ability to aggregate the summary correctly across hosts.
Related
Heatmap adds time to the distribution. Percentile summary reports selected positions within it. Ratio and rate can express counts as proportions.
Stacked composition divides totals into categories. Data table provides exact interval counts.