Written and maintained by CASRAI Editorial Board
Last updated
A binomial probability distribution graph is a bar chart with one bar for each possible number of successes, k = 0 to n, where the height of each bar is P(X = k). The bars sum to 1. Its shape is set by two numbers: the number of trials n and the success probability p. This guide shows how to build the graph, how to predict its shape from n and p before plotting, and how to read probabilities off it, using a worked example with n = 10 and p = 0.3.
What the binomial distribution graph shows
The binomial distribution describes the number of successes in n independent trials that each have exactly two outcomes and the same success probability p. NIST/SEMATECH states that it “is used when there are exactly two mutually exclusive outcomes of a trial” and that it “assumes that p is fixed for all trials.” Because the count of successes can only be a whole number, the graph is drawn as separate bars or stems at k = 0, 1, …, n, never as a continuous curve. For the calculation side, see the binomial probability calculator guide; this page is about the picture.
Formula and symbols
The probability mass function (PMF) plotted on the vertical axis is P(X = k) = C(n, k) pk (1 – p)n – k, for k = 0, 1, …, n (NIST/SEMATECH e-Handbook; SciPy documentation). The cumulative distribution function (CDF) is the running total F(k) = P(X ≤ k), the sum of C(n, i) pi (1 – p)n – i for i = 0 to k.
- n: number of trials (the graph has n + 1 bars).
- k: number of successes, the horizontal axis.
- p: probability of success on a single trial; 1 – p is the probability of a single failure.
- C(n, k): the number of ways to choose which k trials succeed, n! / (k!(n – k)!).
NIST gives the mean as np, the standard deviation as sqrt(np(1 – p)), the skewness as (1 – 2p) / sqrt(np(1 – p)) and the kurtosis as 3 – 6/n + 1/(np(1 – p)). The sign of the skewness is the sign of 1 – 2p, which is what lets you predict the graph’s lean from p alone. For the general PMF idea see probability mass function formula.
Worked example: n = 10, p = 0.3
Suppose each of 10 independent trials succeeds with probability 0.3. For k = 3: C(10, 3) = 120, 0.33 = 0.027 and 0.77 = 0.0823543, so P(X = 3) = 120 × 0.027 × 0.0823543 = 0.2668. Repeating this for every k gives the bar heights and the cumulative column used for the step graph:
| k | P(X = k) | P(X ≤ k) |
|---|---|---|
| 0 | 0.0282 | 0.0282 |
| 1 | 0.1211 | 0.1493 |
| 2 | 0.2335 | 0.3828 |
| 3 | 0.2668 | 0.6496 |
| 4 | 0.2001 | 0.8497 |
| 5 | 0.1029 | 0.9527 |
| 6 | 0.0368 | 0.9894 |
| 7 | 0.0090 | 0.9984 |
| 8 | 0.0014 | 0.9999 |
| 9 | 0.0001 | 1.0000 |
| 10 | 0.0000 | 1.0000 |
The tallest bar is at k = 3, with height 0.2668, and the mean is np = 3. The standard deviation is sqrt(10 × 0.3 × 0.7) = sqrt(2.1) = 1.449. Values are rounded to four decimals, so the printed bars add to 1 within rounding.
How the graph changes with n and p
The table below was computed from the PMF and the NIST formulas above, so you can predict a graph from its parameters.
| n | p | Mean np | SD | Skewness | Tallest bar (k, height) | Shape |
|---|---|---|---|---|---|---|
| 10 | 0.2 | 2.0 | 1.265 | 0.474 | 2, 0.3020 | Tail to the right |
| 10 | 0.5 | 5.0 | 1.581 | 0.000 | 5, 0.2461 | Symmetric |
| 10 | 0.8 | 8.0 | 1.265 | -0.474 | 8, 0.3020 | Tail to the left |
| 100 | 0.5 | 50.0 | 5.000 | 0.000 | 50, 0.0796 | Symmetric |
Binomial distribution plot for low, middle and high p
When p is below 0.5 the skewness is positive and the bars pile up on the left with a longer tail to the right. At p = 0.5 the skewness is zero and the graph is symmetric. Above 0.5 it mirrors the low-p case: p = 0.2 and p = 0.8 have the same bar heights in reverse order (both n = 10 rows share SD 1.265 and tallest-bar height 0.3020).
Effect of n
Increasing n adds bars and moves the center to np. Standard deviation grows only with the square root of n, so with n = 100 and p = 0.5 the standard deviation is 5 while the largest single bar falls to 0.0796. The kurtosis formula 3 – 6/n + 1/(np(1 – p)) approaches 3 as n grows (2.98 at n = 100, p = 0.5).
Interpretation: how to read the graph
| You want | Read it as | Example, n = 10, p = 0.3 |
|---|---|---|
| P(X = k) | Height of the bar at k | P(X = 3) = 0.2668 |
| P(X ≤ k) | Sum of bars up to and including k, or height of the CDF step at k | P(X ≤ 3) = 0.6496 |
| P(X ≥ k) | 1 minus the CDF at k – 1 | P(X ≥ 3) = 1 – 0.3828 = 0.6172 |
| Most likely count | Tallest bar | k = 3 |
| Typical spread | Mean plus or minus the standard deviation | 3 ± 1.449 |
The PMF graph answers “how likely is exactly k?”; the CDF graph is a staircase that rises from 0 to 1 and answers “how likely is k or fewer?”. See cumulative distribution function (CDF) for the step form in general.
Assumptions and common mistakes
- Drawing a smooth line through the points. The distribution exists only at whole numbers. R’s documentation notes that for a non-integer x, dbinom returns zero (with a warning). Use bars or stems.
- Changing p between trials. The graph is valid only if p is fixed for all trials, as NIST states. If trials draw without replacement from a small finite population, p changes; see the hypergeometric distribution.
- Plotting the wrong range. The x-axis must run from 0 to n. Cutting it at the visible bars hides a tail; extending it past n shows impossible values.
- Comparing heights across different n. Bars at n = 10 (tallest 0.2461 at p = 0.5) and n = 100 (tallest 0.0796) are not comparable by height, because the same total probability of 1 is shared among more bars.
- Confusing count and waiting time. The binomial counts successes in a fixed number of trials. Counting trials until a target number of successes is the negative binomial distribution, and counting events in a continuous interval is the Poisson distribution.
Expected value and variance for the same setup are covered in binomial distribution expected value.
How to report it
Label the vertical axis “Probability, P(X = k)” and the horizontal axis “Number of successes (k)”, and state n and p in the figure caption. Example caption: “Figure 1. Binomial probability mass function for n = 10 trials and p = 0.3. The most likely outcome is k = 3 (P = .267).” Example text: “The number of successes was modeled as binomial with n = 10 and p = 0.3 (M = 3.00, SD = 1.45); the probability of three or fewer successes was .65.” Follow your journal’s or style guide’s rules for figure formatting.
How to calculate and plot it in Excel, R or Python
Excel
Microsoft documents BINOM.DIST(number_s, trials, probability_s, cumulative): with cumulative TRUE it returns the probability of at most number_s successes, with FALSE the probability of exactly number_s successes. List k = 0 to 10 in column A and enter =BINOM.DIST(A2, 10, 0.3, FALSE) in B2, fill down, then insert a clustered column chart of column B. Use TRUE for the CDF column.
R
n <- 10; p <- 0.3
barplot(dbinom(0:n, size = n, prob = p), names.arg = 0:n,
xlab = "Number of successes (k)", ylab = "P(X = k)")
pbinom(3, size = n, prob = p) # 0.6496
Python
import numpy as np
from scipy.stats import binom
import matplotlib.pyplot as plt
n, p = 10, 0.3
k = np.arange(0, n + 1)
fig, (a, b) = plt.subplots(1, 2, figsize=(9, 3.5))
a.bar(k, binom.pmf(k, n, p)); a.set_xlabel("k"); a.set_ylabel("P(X = k)")
b.step(k, binom.cdf(k, n, p), where="post"); b.set_xlabel("k"); b.set_ylabel("P(X <= k)")
plt.show()
print(binom.pmf(3, n, p), binom.cdf(3, n, p)) # 0.2668 0.6496
FAQ
What does a binomial distribution graph look like?
A set of bars at the whole numbers 0 to n. It is symmetric when p = 0.5, has a tail to the right when p is below 0.5, and a tail to the left when p is above 0.5.
What is on the axes?
The horizontal axis is the number of successes k; the vertical axis is the probability P(X = k) for a PMF graph or P(X ≤ k) for a CDF graph.
Is a binomial distribution graph continuous?
No. It is discrete; probabilities exist only at integers.
Where is the peak?
Near the mean np. In the worked example the mean is 3 and the tallest bar is at k = 3.
Sources
- NIST/SEMATECH e-Handbook of Statistical Methods, Binomial distribution: https://www.itl.nist.gov/div898/handbook/eda/section3/eda366i.htm (checked 2026-10-29).
- SciPy documentation, scipy.stats.binom: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom.html (checked 2026-10-29).
- R documentation, The Binomial Distribution (stats::Binomial): https://stat.ethz.ch/R-manual/R-devel/library/stats/html/Binomial.html (checked 2026-10-29).
- Microsoft Support, BINOM.DIST function: https://support.microsoft.com/en-us/office/binom-dist-function-c5ae37b6-f39c-4be2-94c2-509a1480770c (checked 2026-10-29).








