How to Create Kernel Density Plots in R (With Examples)

Kernel density plots are a type of visualization that allow for the comparison of distributions between different datasets in R. To create a kernel density plot, the user must first set up the data, then use the density() command in the stats package to create the plot. Examples of how to create kernel density plots in R are provided, including using different kernels, changing the bandwidth, and plotting multiple densities in one graph.


A kernel density plot is a type of plot that displays the distribution of values in a dataset using one continuous curve.

A kernel density plot is similar to a , but it’s even better at displaying the shape of a distribution since it isn’t affected by the number of bins used in the histogram.

We can use the following methods to create a kernel density plot in R:

Method 1: Create One Kernel Density Plot

#define kernel density
kd <- density(data)

#create kernel density plot
plot(kd)

Method 2: Create a Filled-In Kernel Density Plot

#define kernel density
kd <- density(data)

#create kernel density plot
plot(kd)

#fill in kernel density plot with specific color
polygon(kd, col='blue', border='black')

Method 3: Create Multiple Kernel Density Plots

#plot first kernel density plot
kd1 <- density(data1)
plot(kd1, col='blue')

#plot second kernel density plot
kd2 <- density(data2)
lines(kd2, col='red')

#plot third kernel density plot
kd3 <- density(data3)
lines(kd3, col='purple')

...

The following examples show how to use each method in practice.

Method 1: Create One Kernel Density Plot

The following code shows how to create a kernel density plot for one dataset in R:

#create data
data <- c(3, 3, 4, 4, 5, 6, 7, 7, 7, 8, 12, 13, 14, 17, 19, 19)

#define kernel density
kd <- density(data)

#create kernel density plot
plot(kd, main='Kernel Density Plot of Data')

The x-axis shows the values of the dataset and the y-axis shows the relative frequency of each value. The highest points in the plot show where the values occur most often.

Method 2: Create a Filled-In Kernel Density Plot

#create data
data <- c(3, 3, 4, 4, 5, 6, 7, 7, 7, 8, 12, 13, 14, 17, 19, 19)

#define kernel density
kd <- density(data)

#create kernel density plot
plot(kd)

#add color
polygon(kd, col='steelblue', border='black')

Method 3: Create Multiple Kernel Density Plots

The following code shows how to create multiple kernel density plots in one plot in R:

#create datasets
data1 <- c(3, 3, 4, 4, 5, 6, 7, 7, 7, 8, 12, 13, 14, 17, 19, 19)
data2 <- c(12, 3, 14, 14, 4, 5, 6, 10, 14, 7, 7, 8, 10, 12, 17, 20)

#plot first kernel density plot
kd1 <- density(data1)
plot(kd1, col='blue', lwd=2)

#plot second kernel density plot
kd2 <- density(data2)
lines(kd2, col='red', lwd=2)

Note that we can use similar syntax to create as many kernel density plots in one chart as we’d like.

The following tutorials explain how to create other common plots in R:

x