math.wiki
Statistics › Data displays › Histograms › Cumulative frequency graphs and percentiles
Open on the map
Statistics

Cumulative frequency graphs and percentiles

Eighty waits between geyser eruptions are sorted into classes ten minutes wide. Below what wait do half of them fall, and what share of them last less than 95 minutes?

Where you are 4 in Histograms

When you reach for it

A Relative frequency histograms shows how many values fall in each class. Many questions are about everything below a point instead: what share of waits are shorter than 95 minutes, or below what wait the shortest half fall. A histogram answers them only by adding bars, and only at class boundaries. A cumulative frequency graph (also called an ogive, said “OH-jive”) does the adding once and draws the result as a rising line, so any such question becomes a reading off one curve.

The graph plots, above each value x, the number of data values less than x. Plotted as a count it is a cumulative frequency graph; divided by the total n, so that its scale runs from 0 to 100 percent, it is a cumulative relative frequency graph. The two have the same shape, and one figure can carry both scales.

You reach for it in two directions. From a value to a percent: what is the percentile rank of a 65 minute wait, the percent of waits at or below it? From a percent to a value: what wait is the 90th percentile, the value with 90 percent of the data at or below it? The second direction gives the median and the quartiles, which are the 50th, 25th and 75th percentiles. Percentiles works with both ideas on a list of values; this lesson works when only the grouped counts are known.

All the data in this lesson are made up. Nino, Giorgi and Ketevan are timing a geyser.

The procedure

Running totals. Start from a frequency table with classes such as 50 to 60 minutes. A value on a boundary goes in the class to its right, so a wait of exactly 60 minutes counts in 60 to 70. The cumulative frequency of a class is its count plus the counts of every class below it. It answers “how many values are less than this class’s upper boundary?”, which is why each running total belongs to the upper boundary.

Points at upper boundaries. Plot each running total above the upper boundary of its class, and add a point at height 0 above the lowest boundary, since no value is below it. Plotting at the midpoint instead would claim that all the values in a class are below its middle, which is false. At a boundary the height is exact: it is a count straight from the table.

Straight segments between the points. Between two boundaries the table says nothing about where the values lie. Joining the points with a straight segment assumes the values in each class are spread evenly across it, so the count climbs at a steady rate. A class with f values and width w climbs f in a run of w, a slope of \displaystyle \frac{f}{w} values per unit. A steep segment marks a crowded class; a flat one marks an empty class. The graph never goes down, because a running total never shrinks.

Reading it. Value to percent: go up from the value to the graph, then across to the scale. At a value x inside a class with lower boundary L, width w and count f, the evenly spread assumption puts the fraction \displaystyle \frac{x - L}{w} of that class below x, so the count below x is

C_{\text{below}} + \frac{x - L}{w} \cdot f,

where C_{\text{below}} is the running total at L. Percent to value: go across from the percent to the graph, then down. For the pth percentile the target count is \displaystyle \frac{p}{100} \cdot n, and solving the same relation for x gives

x = L + \frac{\text{target} - C_{\text{below}}}{f} \cdot w.

Both are the equation of one straight segment, so reading a well drawn graph carefully and using the relation give the same answer. Every reading between boundaries is an estimate, since it rests on the evenly spread assumption.

Worked examples

Example 1

Building the graph from the table

Nino timed 80 waits between eruptions of the geyser, in minutes. Make the cumulative table and the cumulative frequency graph.

Wait (minutes)Count
50 to 606
60 to 7010
70 to 8014
80 to 9026
90 to 10018
100 to 1106
Solution

Each running total adds the next count to the one before it, and each cumulative percent divides a running total by 80:

Upper boundaryCumulative countCumulative percent
6067.5\%
706 + 10 = 1620\%
8016 + 14 = 3037.5\%
9030 + 26 = 5670\%
10056 + 18 = 7492.5\%
11074 + 6 = 80100\%

The last total is 80, the whole data set, which checks the adding. The points are (50, 0), (60, 6), (70, 16), (80, 30), (90, 56), (100, 74) and (110, 80): the first because no wait is below 50 minutes, the rest at upper boundaries. Joining them gives the first figure. Since 80 waits make 100 percent, 20 waits sit level with 25 percent, so the right scale is the left one times \displaystyle \frac{100}{80}.

50 60 70 80 90 100 110 0 20 40 60 80 0% 25% 50% 75% 100% Cumulative number of waits Cumulative percent Wait between eruptions (minutes)
Figure 1Nino’s graph. Each point sits at the upper boundary of a class, at the number of waits below that boundary. The steepest segment, 80 to 90 minutes, is the class with the most waits.

The segment from 80 to 90 minutes is the steepest, a climb of 26 waits in 10 minutes. That is the tallest bar of the histogram, seen as a slope.

Example 2

From a wait to a percentile rank

Using Nino’s graph, estimate the percentile ranks of a 65 minute wait and a 95 minute wait, and the percent of waits longer than 95 minutes. What percent of waits are under 80 minutes?

Solution

A 65 minute wait lies halfway through the class 60 to 70, which holds 10 waits on top of the 6 below 60. Spreading those 10 evenly puts half of them below 65:

\begin{aligned} 6 + \frac{65 - 60}{10} \cdot 10 &= 11 \text{ waits}, \\ \frac{11}{80} &= 13.75\%. \end{aligned}

So a 65 minute wait is at about the 14th percentile. In the same way 95 minutes is halfway through 90 to 100, which holds 18 waits above the 56 below 90:

\begin{aligned} 56 + \frac{95 - 90}{10} \cdot 18 &= 56 + 9 = 65 \text{ waits}, \\ \frac{65}{80} &= 81.25\%. \end{aligned}

So 95 minutes is at about the 81st percentile, and about 100 - 81.25 = 18.75 percent of waits, some 15 of them, are longer. The last question needs no estimate: 80 is a boundary, and the table says exactly 30 waits, 37.5\%, are under 80 minutes.

Example 3

The median and the quartiles

Estimate the median, the first and third quartiles Q_1 and Q_3, and the interquartile range of Nino’s waits.

Solution

The quartiles and the median are the 25th, 50th and 75th percentiles, so the targets are 0.25 \cdot 80 = 20, 0.50 \cdot 80 = 40 and 0.75 \cdot 80 = 60 waits. Each target is first placed in a class by the running totals, then the class is split evenly.

The median: 40 lies between 30 (at 80 minutes) and 56 (at 90), so the median is in the 80 to 90 class, 10 waits into its 26:

80 + \frac{40 - 30}{26} \cdot 10 \approx 83.8 \text{ minutes}.

Q_1: 20 lies between 16 and 30, so Q_1 is 4 waits into the 14 of the 70 to 80 class. Q_3: 60 lies between 56 and 74, so Q_3 is 4 waits into the 18 of the 90 to 100 class:

\begin{aligned} Q_1 &\approx 70 + \frac{4}{14} \cdot 10 \approx 72.9, \\ Q_3 &\approx 90 + \frac{4}{18} \cdot 10 \approx 92.2. \end{aligned}

The interquartile range is Q_3 - Q_1 \approx 92.22 - 72.86 \approx 19.4 minutes: the middle half of the waits spans about 19 minutes. The second figure draws the three readings.

50 60 70 80 90 100 110 0 20 40 60 80 0% 25% 50% 75% 100% Cumulative number of waits Cumulative percent Wait between eruptions (minutes)
Q_1
M
Q_3
Figure 2Reading across from 20, 40 and 60 waits and then down gives the quartiles and the median.
Example 4

Other percentiles, and a count between two values

Estimate the 10th and 90th percentiles of Nino’s waits, and how many waits fall between 75 and 95 minutes.

Solution

The 10th percentile has target 0.10 \cdot 80 = 8 waits, which lies between 6 and 16, so it is 2 waits into the 10 of the 60 to 70 class. The 90th has target 72, between 56 and 74, so it is 16 waits into the 18 of the 90 to 100 class:

\begin{aligned} P_{10} &\approx 60 + \frac{2}{10} \cdot 10 = 62, \\ P_{90} &\approx 90 + \frac{16}{18} \cdot 10 \approx 98.9. \end{aligned}

So about one wait in ten is 62 minutes or shorter, and about one in ten is 99 minutes or longer.

A count between two values is a difference of two readings. Below 75 minutes lie about \displaystyle 16 + \frac{5}{10} \cdot 14 = 23 waits, and below 95 minutes about 65, from Example 2. So about 65 - 23 = 42 waits, 52.5\% of them, last between 75 and 95 minutes.

Example 5

Ketevan’s graph, read back into counts

Ketevan timed how long each of 50 eruptions lasted and kept only the cumulative relative frequency graph below. Recover the count in each class, say what the shape of the graph shows, and estimate the median, the 90th percentile and the percentile rank of a 3.5 minute eruption.

1 2 3 4 5 6 0% 20% 40% 60% 80% 100% Cumulative percent of eruptions Duration of eruption (minutes)
Figure 3Ketevan’s graph of eruption durations. The shallow segment from 3 to 4 minutes means few eruptions last that long.
Solution

The graph passes through 10\%, 30\%, 40\%, 80\% and 100\% at 2, 3, 4, 5 and 6 minutes. The climb across each class is that class’s share, and a share of 50 eruptions is a count:

\begin{aligned} &10\%, \ 20\%, \ 10\%, \ 40\%, \ 20\% \text{ of } 50 \\ &= 5, \ 10, \ 5, \ 20, \ 10 \text{ eruptions}. \end{aligned}

They add to 50. The steep segment from 4 to 5 minutes holds the most eruptions, and the shallow one from 3 to 4 holds few, between a smaller crowd at 2 to 3 minutes and the larger one above 4. A histogram of these counts would show two peaks; the cumulative graph shows them as two steep stretches.

The median has 50\% below it. That lies between 40\% at 4 minutes and 80\% at 5, a quarter of the way up the climb of 40 points, so the median is about \displaystyle 4 + \frac{10}{40} \cdot 1 = 4.25 minutes. The 90th percentile lies halfway up the climb from 80\% to 100\%, at about 5.5 minutes. And 3.5 minutes is halfway through a class that climbs from 30\% to 40\%, so its percentile rank is about 35.

Example 6

Merging classes

Giorgi regroups Nino’s 80 waits into four classes: 50 to 70 (16 waits), 70 to 80 (14), 80 to 90 (26) and 90 to 110 (24). Which points of the graph change, and what happens to the median, to Q_3 and to the percentile rank of 65 minutes?

Solution

The running totals are 16, 30, 56 and 80 at 70, 80, 90 and 110 minutes, the same heights as before at those boundaries. Merging two classes removes the boundary between them, so the points (60, 6) and (100, 74) disappear and the graph runs straight from (50, 0) to (70, 16) and from (90, 56) to (110, 80). Unequal widths cause no trouble here: a running total is a count whatever the class width, so the graph keeps its meaning even where a histogram’s bar heights would mislead.

The median is still found in the unchanged 80 to 90 segment, so it stays about 83.8 minutes. Q_3 now lies 4 waits into the 24 of the wide class 90 to 110:

Q_3 \approx 90 + \frac{4}{24} \cdot 20 \approx 93.3 \text{ minutes},

against 92.2 before. The rank of 65 minutes becomes \displaystyle \frac{15}{20} \cdot 16 = 12 waits, 15\%, against 13.75\%. The straight segment across 50 to 70 spreads its 16 waits evenly, though the finer table showed only 6 of them in the first half. Coarser classes give the evenly spread assumption more room to be wrong.

Boundaries

  • A reading between two boundaries is an estimate that assumes the values in a class are spread evenly. Only at a boundary is the graph exact. The true median of Nino’s waits lies somewhere in 80 to 90 minutes, because the 40th and 41st waits are both in that class, but the table cannot place it closer.
  • The graph needs a quantity that can be ordered. “Below x” means nothing for categories such as eye color.
  • The heights count values less than each boundary. For data measured on a continuous scale, such as time, “less than” and “at or below” agree up to the precision of the measurement, which is why the percentile rank (percent at or below) can be read from the same curve. For whole-number data with many ties at a boundary the two counts can differ, and the convention has to be stated.
  • Different texts set the target count for the pth percentile slightly differently (for example \displaystyle \frac{p}{100}(n + 1) instead of \displaystyle \frac{p}{100} \cdot n). For large n the difference is small next to the error of the even spread estimate.
  • Below the lowest boundary the graph is 0 and above the highest it is n. It says nothing about how far below or above those boundaries the data could have gone, since the table does not either.

Where this goes next

The quartiles read here, with the extremes, make the five-number summary drawn as a box plot, and percentiles for a single value are developed in Percentiles. When a smooth model replaces the grouped counts, the rising cumulative graph becomes a smooth S-shaped curve, and the share below a value becomes an area under a density curve: that is how percentiles are read from the normal model in Normal calculations: areas and percentiles.

Exercises

All data are made up. Exercises 1, 2 and 4 to 12 use Giorgi’s record of the heights, in meters, of 40 eruptions of a second geyser:

Height (m)20 to 2525 to 3030 to 3535 to 4040 to 45
Count4812106

Building the graph

  1. Make the cumulative frequency and cumulative percent for each class of the heights.
  2. List every point of the cumulative frequency graph of the heights.
  3. Nino’s cumulative counts for the times, in minutes, that 25 visitors spent at the viewing deck are 3, 9, 17, 22 and 25 at 10, 20, 30, 40 and 50 minutes, with the first class starting at 0. Find the count in each class.
  4. Which segment of the heights graph is steepest, and what is its slope?

From a value to a percent

  1. Find the percentile rank of a 30 meter eruption.
  2. Estimate the percentile rank of a 37 meter eruption.
  3. Estimate the percentile rank of a 22 meter eruption.
  4. Estimate how many eruptions reached between 27 and 42 meters.

From a percent to a value

  1. Estimate the median height.
  2. Estimate Q_1, Q_3 and the interquartile range of the heights.
  3. Estimate the 90th percentile of the heights.
  4. Above what height are the tallest 20 percent of eruptions?

Reading a graph without its table

Ketevan’s cumulative relative frequency graph of 200 water temperatures at the geyser’s outflow, in degrees Fahrenheit, passes through 0\% at 150, 15\% at 160, 45\% at 170, 80\% at 180 and 100\% at 190.

  1. Find the number of readings in each class, and estimate the median temperature.
  2. Estimate the 25th percentile of the temperatures.
  3. A cumulative frequency graph of the distances, in meters, that spray from 60 eruptions carried downwind passes through (10, 0), (20, 15), (30, 15), (40, 51) and (50, 60). What does the graph say about distances from 20 to 30 meters? Estimate the median distance.
  4. Giorgi merges the first two height classes into one class, 20 to 30 meters, with 12 eruptions. Estimate the percentile rank of 22 meters now, and say why it differs from Exercise 7.

Reasoning

  1. Explain why each running total is plotted at the upper boundary of its class, not at its midpoint.
  2. Explain why a cumulative frequency graph can never go down, and what a horizontal segment means.
  3. Explain why the true median of the heights must lie in the class 30 to 35 meters, even though the graph’s estimate might not be the true value.
  4. With equal class widths, explain why the steepest segment marks the tallest bar of the histogram. If the widths differ, what does the steepest segment mark instead?
Answers
  1. Cumulative frequencies 4, 12, 24, 34, 40; cumulative percents 10\%, 30\%, 60\%, 85\%, 100\%. Each running total adds the next count; each percent divides by 40.
  2. (20, 0), (25, 4), (30, 12), (35, 24), (40, 34), (45, 40). The first point is at the lowest boundary, the rest at upper boundaries.
  3. 3, 6, 8, 5, 3. Each count is the difference of consecutive running totals: 9 - 3, 17 - 9, 22 - 17, 25 - 22.
  4. The 30 to 35 segment, slope \displaystyle \frac{12}{5} = 2.4 eruptions per meter. It holds the most eruptions, and all the widths are equal.
  5. 30\%, exactly: 30 is a boundary and 12 of 40 eruptions are below it.
  6. About 70. \displaystyle 24 + \frac{2}{5} \cdot 10 = 28 eruptions, and \displaystyle \frac{28}{40} = 70\%.
  7. About 4. \displaystyle \frac{2}{5} \cdot 4 = 1.6 eruptions, and \displaystyle \frac{1.6}{40} = 4\%.
  8. About 29. Below 27: \displaystyle 4 + \frac{2}{5} \cdot 8 = 7.2. Below 42: \displaystyle 34 + \frac{2}{5} \cdot 6 = 36.4. The difference is 29.2.
  9. About 33.3 meters. The target 20 is 8 eruptions into the 12 of 30 to 35: \displaystyle 30 + \frac{8}{12} \cdot 5 \approx 33.3.
  10. Q_1 \approx 28.75, Q_3 \approx 38, interquartile range about 9.25 meters. Target 10 is 6 into the 8 of 25 to 30: \displaystyle 25 + \frac{6}{8} \cdot 5 = 28.75. Target 30 is 6 into the 10 of 35 to 40: \displaystyle 35 + \frac{6}{10} \cdot 5 = 38.
  11. About 41.7 meters. Target 36 is 2 into the 6 of 40 to 45: \displaystyle 40 + \frac{2}{6} \cdot 5 \approx 41.7.
  12. About 39 meters, the 80th percentile. Target 32 is 8 into the 10 of 35 to 40: \displaystyle 35 + \frac{8}{10} \cdot 5 = 39.
  13. 30, 60, 70, 40 readings in the classes from 150 to 190, from climbs of 15\%, 30\%, 35\%, 20\% of 200. Median about 171.4 degrees: 50\% is 5 points into the climb of 35 from 170 to 180, and \displaystyle 170 + \frac{5}{35} \cdot 10 \approx 171.4.
  14. About 163.3 degrees. 25\% is 10 points into the climb of 30 from 160 to 170: \displaystyle 160 + \frac{10}{30} \cdot 10 \approx 163.3.
  15. The flat segment means no distances fell from 20 to 30 meters. Median about 34.2 meters: the target 30 is 15 into the 36 of 30 to 40, and \displaystyle 30 + \frac{15}{36} \cdot 10 \approx 34.2.
  16. About 6. \displaystyle \frac{2}{10} \cdot 12 = 2.4 eruptions, and \displaystyle \frac{2.4}{40} = 6\%. The wide class spreads its 12 eruptions evenly over 20 to 30, though the finer table put only 4 of them in 20 to 25, so more are assumed to sit below 22.
  17. A running total counts every value in that class and below. All of them are below the class’s upper boundary, but not all are below its midpoint, so the count is true only at the upper boundary.
  18. Moving right adds values to the count and never removes any, so the height cannot drop. A horizontal segment means the count did not grow: no values lie in that class.
  19. The median is the mean of the 20th and 21st heights. 12 heights are below 30 and 24 below 35, so the 20th and 21st both lie in 30 to 35, and so does their mean. The graph only guesses where inside the class.
  20. Each segment’s slope is \displaystyle \frac{f}{w}. With one width w for all classes, the largest slope comes from the largest count f, the tallest bar. With unequal widths the steepest segment marks the class with the most values per unit of width, the most crowded class, which need not hold the most values.
kg1128 · updated 2026-10-20 · CC-BY-SA-4.0