Table of Contents
To plot a normal distribution in R, you can use the “dnorm” function to generate a series of values that follow a normal distribution. These values can then be plotted using the “plot” or “hist” function to create a visual representation of the distribution. Additionally, you can use the “curve” function to plot a smooth curve of the normal distribution. By specifying the parameters such as mean and standard deviation, you can customize the shape and characteristics of the distribution. With the use of these functions, R allows for easy and accurate plotting of normal distributions, making it a useful tool for statistical analysis and data visualization.
Plot a Normal Distribution in R
To plot a in R, we can either use base R or install a fancier package like ggplot2.
Using Base R
Here are three examples of how to create a normal distribution plot using Base R.
Example 1: Normal Distribution with mean = 0 and standard deviation = 1
To create a normal distribution plot with mean = 0 and standard deviation = 1, we can use the following code:
#Create a sequence of 100 equally spaced numbers between -4 and 4 x <- seq(-4, 4, length=100) #create a vector of values that shows the height of the probability distribution#for each value in x y <- dnorm(x) #plot x and y as a scatterplot with connected lines (type = "l") and add#an x-axis with custom labels plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "") axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))
This generates the following plot:
Example 2: Normal Distribution with mean = 0 and standard deviation = 1 (less code)
We could also create a normal distribution plot without defining x and y, and instead simply using the “curve” function using the following code:
curve(dnorm, -3.5, 3.5, lwd=2, axes = FALSE, xlab = "", ylab = "") axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))
This generates the exact same plot:
Example 3: Normal Distribution with customized mean and standard deviation
To create a normal distribution plot with a user-defined mean and standard deviation, we can use the following code:
#define population mean and standard deviation population_mean <- 50 population_sd <- 5 #define upper and lower bound lower_bound <- population_mean - population_sd upper_bound <- population_mean + population_sd #Create a sequence of 1000 x values based on population mean and standard deviation x <- seq(-4, 4, length = 1000) * population_sd + population_mean #create a vector of values that shows the height of the probability distribution #for each value in x y <- dnorm(x, population_mean, population_sd) #plot normal distribution with customized x-axis labels plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "") sd_axis_bounds = 5 axis_bounds <- seq(-sd_axis_bounds * population_sd + population_mean, sd_axis_bounds * population_sd + population_mean, by = population_sd) axis(side = 1, at = axis_bounds, pos = 0)
This generates the following plot:
Using ggplot2
Another way to create a normal distribution plot in R is by using the ggplot2 package. Here are two examples of how to create a normal distribution plot using ggplot2.
Example 1: Normal Distribution with mean = 0 and standard deviation = 1
To create a normal distribution plot with mean = 0 and standard deviation = 1, we can use the following code:
#install (if not already installed) and load ggplot2 if(!(require(ggplot2))){install.packages('ggplot2')} #generate a normal distribution plot ggplot(data.frame(x = c(-4, 4)), aes(x = x)) + stat_function(fun = dnorm)
This generates the following plot:
Example 2: Normal Distribution using the ‘mtcars’ dataset
The following code illustrates how to create a normal distribution for the miles per gallon column in the built-in R dataset mtcars:
ggplot(mtcars, aes(x = mpg)) + stat_function( fun = dnorm, args = with(mtcars, c(mean = mean(mpg), sd = sd(mpg))) ) + scale_x_continuous("Miles per gallon")
This generates the following plot: