How to Plot a Weibull Distribution in R

Spread the love

The Weibull distribution is a versatile probability distribution that is used widely across different fields. It’s a staple in reliability engineering and survival analysis due to its ability to model various types of failure rates. In this article, we’ll guide you on how to generate and plot a Weibull distribution using R, a popular language for statistical analysis. We’ll start by providing a brief introduction to the Weibull distribution, then we’ll explain how to generate a Weibull distribution in R, plot it, and interpret the results.

Introduction to Weibull Distributions

The Weibull distribution is a continuous probability distribution named after Wallodi Weibull, who described it in detail in 1951, although it was first identified by Rosin & Rammler in 1933. The distribution is characterized by two parameters: scale (λ) and shape (k).

The scale parameter, λ, is also known as the characteristic life parameter. It determines the scale of the distribution function on the x-axis. The shape parameter, k, defines the shape of the failure rate function. It signifies if the failure rate is increasing (k > 1), constant (k = 1), or decreasing (k < 1).

Generating a Weibull Distribution in R

R provides the function rweibull() for generating random variates that follow a Weibull distribution. This function takes three arguments: n, the number of observations to generate, and the shape and scale parameters of the distribution.

Here is an example of how to generate 1000 random variables from a Weibull distribution with a shape of 2 and a scale of 1:

# Set seed for reproducibility

# Generate 1000 Weibull random variables
weibull <- rweibull(1000, shape = 2, scale = 1)

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

Setting a seed with set.seed() ensures that the random number generation is reproducible.

Plotting a Weibull Distribution in R

Once you have generated your Weibull distributed data, the next step is to create a plot to visualize it. A histogram is a common choice for visualizing distributions.


A histogram is a graphical representation of the distribution of a dataset. It partitions the x-axis into bins, counts the number of observations in each bin, and shows the bins on the y-axis. In R, you can use the hist() function to create a histogram. Here’s how you can create a histogram of your Weibull data:

# Plot histogram
hist(weibull, main="Histogram of Weibull Distribution", xlab="Value", ylab="Frequency", col="lightgreen", border="black")

This command creates a histogram with the main title “Histogram of Weibull Distribution”. The x-axis and y-axis are labeled “Value” and “Frequency”, respectively.

Density Plot

Another common way to visualize distributions in R is using density plots, which can be more suitable for continuous data. The density() function can be used to estimate the density function of your data, and the plot() function can then be used to display this:

# Estimate density
weibull_density <- density(weibull)

# Plot density
plot(weibull_density, main="Density Plot of Weibull Distribution", xlab="Value", ylab="Density", col="darkgreen")

Adding a Theoretical Curve

It can be helpful to overlay the theoretical Weibull distribution on your plot to see how well your data aligns with it. You can do this using the dweibull() function, which gives the density (heights) of a Weibull distribution for a sequence of values. The curve() function can be used to add this theoretical density curve to your histogram or density plot:

# Create sequence of values
x_values <- seq(min(weibull), max(weibull), length.out = 1000)

# Calculate densities
y_values <- dweibull(x_values, shape = 2, scale = 1)

# Plot histogram with theoretical curve
hist(weibull, freq = FALSE, main="Histogram with Theoretical Curve", xlab="Value", ylab="Density", col="lightgreen", border="black")
curve(dweibull(x, shape = 2, scale = 1), col="darkgreen", add=TRUE, lwd=2)

In this code, freq=FALSE is used to plot densities instead of frequencies in the histogram. The curve() function adds the theoretical Weibull density curve to the plot.

Interpreting the Plots

The histogram provides a visual representation of the data distribution. The x-axis represents the possible values of the random variable, and the y-axis represents their corresponding frequencies.

The density plot provides a smoothed version of the histogram and is better suited for continuous data like the Weibull distribution.

The theoretical curve overlay provides a way to visually compare your data with the expected Weibull distribution. If your data closely follows the theoretical curve, it indicates that the Weibull distribution is a suitable model for your data.


In this article, we walked through the steps to generate and plot a Weibull distribution in R. We introduced the Weibull distribution, generated a Weibull distributed dataset, and plotted it as a histogram and a density plot. We also added a theoretical Weibull distribution curve for comparison. Lastly, we discussed how to interpret these plots. With this knowledge, you are well-equipped to generate, visualize, and interpret Weibull distributions in R.

Posted in RTagged

Leave a Reply