ggplot2::geom_density()
   get_help() docs


Description

The geom_density() function is part of the {ggplot2} package, which is part of the {tidyverse}.

The geom_density() function is used within {ggplot2} plots to create a density plot, which shows the distribution of a numeric continuous variable with the appearance of a “smoothened histogram.” The x-axis shows values of the variable, and the y-axis shows the statistical density calculation (this is not a matched value in the dataset!).

Required aesthetics:

  • x: The numeric variable whose distribution to visualize
    • Note that it is also allowed to make a horizontal density plot by providing a y aesthetic instead of an x (but never both)

Commonly used optional aesthetics:

  • color (colour): The outline color for the density plot
  • fill: The fill for the density plot
  • alpha: Transparency for the density plot fill, ranging from 0-1 where 0 is fully transparent and 1 is fully opaque.
  • size: The width of the density plot outline

To use this function, you need to either first load the {ggplot2} library, or always use the function with ggplot2::geom_density() notation.

# Load the library
library(ggplot2)
# Or, load the full tidyverse:
library(tidyverse)

# Or, use :: notation
ggplot2::geom_density()

Examples

The examples below use the msleep dataset. Learn more about this dataset with get_help("msleep").

# Show the msleep dataset with head()
head(msleep)
## # A tibble: 6 × 11
##   name  genus vore  order conservation sleep_total sleep_rem sleep_cycle awake  brainwt  bodywt
##   <chr> <chr> <chr> <chr> <chr>              <dbl>     <dbl>       <dbl> <dbl>    <dbl>   <dbl>
## 1 Owl … Aotus omni  Prim… <NA>                17         1.8      NA       7    0.0155    0.48 
## 2 Moun… Aplo… herbi Rode… nt                  14.4       2.4      NA       9.6 NA         1.35 
## 3 Grea… Blar… omni  Sori… lc                  14.9       2.3       0.133   9.1  0.00029   0.019
## 4 Cow   Bos   herbi Arti… domesticated         4         0.7       0.667  20    0.423   600    
## 5 Thre… Brad… herbi Pilo… <NA>                14.4       2.2       0.767   9.6 NA         3.85 
## 6 Nort… Call… carni Carn… vu                   8.7       1.4       0.383  15.3 NA        20.5


ggplot(msleep) + 
  aes(x = awake) + 
  geom_density()


# Include custom fill and color
ggplot(msleep) + 
  aes(x = awake) + 
  geom_density(fill = "purple", color = "orange")


# Include custom fill, color, and outline size
# When you have many arguments, placing on separate lines makes code easier to read and work with
ggplot(msleep) + 
  aes(x = awake) + 
  geom_density(fill = "purple", 
               color = "orange",
               size = 2)


# Show overlapping density plots in a single panel
# Important to use `alpha` (find a good one with trial/error) so data is not hidden
# Note: to remove NAs, you must manipulate the data first
ggplot(msleep) + 
  aes(x = awake, fill = vore) + 
  geom_density(alpha = 0.6)


# A horizontal density plot using y instead of x aesthetic
ggplot(msleep) + 
  aes(y = awake) + 
  geom_density(fill = "purple")