How to Plot a Poisson Distribution in R

Spread the love

This article will guide you through the process of plotting a Poisson distribution in R. This comprehensive guide will cover a basic overview of Poisson distributions, how to generate Poisson distributed data in R, ways to plot this data, and interpretation of the plots.

Introduction to Poisson Distributions

The Poisson distribution is a discrete probability distribution that expresses the probability of a given number of events occurring in a fixed interval of time or space. These events must occur with a known constant mean rate and independently of the time since the last event.

The Poisson distribution is commonly used to model a variety of real-world phenomena, such as the number of emails received in a day, the number of calls at a call center per hour, or the number of decay events per second from a radioactive source.

The distribution is named after French mathematician Siméon Denis Poisson and is characterized by a single parameter, lambda (λ), which is the expected number of occurrences in the interval.

Generating a Poisson Distribution in R

In R, the rpois() function is used to generate random deviates from a Poisson distribution. The function takes two arguments: n, the number of random variables to generate, and lambda, the expected number of occurrences in a given interval.

Here’s an example of generating a Poisson distribution:

# Set seed for reproducibility

# Generate 1000 Poisson random variables
poisson <- rpois(1000, lambda = 5)

# Inspect the first 10 elements
head(poisson, 10)

In this code, we’re generating 1000 random variables from a Poisson distribution with a lambda of 5. The set.seed() function is used to ensure the reproducibility of results, which is crucial for scientific consistency.

Plotting a Poisson Distribution in R

After generating the Poisson distributed data, you can visualize it using various types of plots. Common plots for visualizing a Poisson distribution include histograms and bar plots.


A histogram provides a visual representation of data distribution. It breaks the data into bins of equal width, and the height of each bin corresponds to the frequency of data in that range. Here’s how you can plot a histogram of your Poisson data:

# Plot histogram
hist(poisson, main="Histogram of Poisson Distribution", xlab="Value", ylab="Frequency", col="skyblue", border="black")

In this code, we use the hist() function to generate the histogram. The main, xlab, and ylab parameters set the title, x-axis label, and y-axis label, respectively.

Bar Plot

For discrete data like a Poisson distribution, a bar plot can provide a more appropriate visualization. You can count the frequency of each outcome using the table() function and then plot these frequencies using barplot():

# Create frequency table
poisson_freq <- table(poisson)

# Plot bar plot
barplot(poisson_freq, main="Bar Plot of Poisson Distribution", xlab="Value", ylab="Frequency", col="skyblue", border="black")

This code generates a bar plot where each bar represents a possible outcome, and the height of the bar corresponds to the frequency of that outcome.

Adding a Theoretical Curve

To compare your data with a theoretical Poisson distribution, you can overlay a theoretical curve on your histogram or bar plot. This is done using the dpois() function, which provides the density (probabilities) of a Poisson distribution for a sequence of values:

# Create sequence of values
x_values <- seq(min(poisson), max(poisson), by = 1)

# Calculate probabilities of theoretical distribution
y_values <- dpois(x_values, lambda = 5)

# Plot histogram with theoretical curve
hist(poisson, freq=FALSE, main="Histogram with Theoretical Curve", xlab="Value", ylab="Probability", col="skyblue", border="black")
lines(x_values, y_values, col="darkblue", lwd=2)

In this code, freq=FALSE is used to plot probabilities instead of frequencies in the histogram. The lines() function adds a theoretical Poisson distribution curve to the histogram.

Interpreting the Plots

The interpretation of these plots is an essential part of understanding your data.

In a histogram, the x-axis represents the values of the random variable (in this case, the number of occurrences), and the y-axis represents the frequency of these values.

In a bar plot, each bar represents a possible outcome, and the height of the bar corresponds to the frequency of that outcome.

The overlay of the theoretical curve serves as a visual check of how well your data aligns with a Poisson distribution. If your data closely follows the curve, it is likely that it follows a Poisson distribution.


Plotting a Poisson distribution in R is a straightforward process when you understand the appropriate functions and methods. This article has guided you through generating a Poisson distribution, plotting it as a histogram and a bar plot, and overlaying a theoretical curve. Interpreting these plots is crucial for understanding your data, and comparing your plots with the theoretical distribution can provide insight into whether your data follows a Poisson distribution.

Posted in RTagged

Leave a Reply