How to plot discrete probability distributions (in Python, using SciPy)
Task
There are many famous discrete probability distributions, such as the binomial and geometric distributions. How can we get access to them in software, to plot the distribution as a series of points?
Related tasks:
- How to generate random values from a distribution
- How to compute probabilities from a distribution
- How to plot continuous probability distributions
Solution
You can import many different random variables from SciPy’s stats
module.
The full list of them is online here.
The challenge with plotting a random variable is knowing the appropriate sample space, because some random variables have sample spaces of infinite width, which cannot be plotted.
The example below uses a geometric distribution, whose sample space is
We style the plot below so that it is clear the sample space is discrete.
1
2
3
4
5
6
7
8
9
10
11
12
from scipy import stats
X = stats.geom( 0.5 ) # use a geometric distribution with p=0.5
import numpy as np
xs = np.arange( 1, 11 ) # specify the range to be 1,2,3,...,10
import matplotlib.pyplot as plt
ys = X.pmf( xs ) # compute the shape of the distribution
plt.plot( xs, ys, 'o' ) # plot circles...
plt.vlines( xs, 0, ys ) # ...and lines
plt.ylim( bottom=0 ) # ensure sensible bottom border
plt.show()
Content last modified on 24 July 2023.
See a problem? Tell us or edit the source.
Contributed by Nathan Carter (ncarter@bentley.edu)