Histograma con estimación kernel de la densidad

Para superponer una densidad kernel sobre un histograma en ggplot2 tendrás que pasar aes(y = ..density..) a geom_histogram y usar geom_density como en el siguiente ejemplo.

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(5)
x <- rnorm(1000)
df <- data.frame(x)

# Histograma con densidad
ggplot(df, aes(x = x)) + 
  geom_histogram(aes(y = ..density..),
                 colour = 1, fill = "white") +
  geom_density()

Histograma con estimación tipo núcleo de la densidad en ggplot

Personalización de la curva

El color, ancho y tipo de línea de la densidad kernel se puede personalizar con colour, lwd y linetype.

Histograma con densidad en ggplot2

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(5)
x <- rnorm(1000)
df <- data.frame(x)

# Histograma con densidad
ggplot(df, aes(x = x)) + 
  geom_histogram(aes(y = ..density..),
                 colour = 1, fill = "white") +
  geom_density(lwd = 1.2,
               linetype = 2,
               colour = 2)

Curva de densidad con área coloreada

También puedes sombrear el área bajo la curva, especificando un color con el argumento fill de la función geom_density. Es recomendable usar un nivel de transparencia (entre 0 y 1) con el argumento alpha, de modo que el histograma permanezca visible.

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(5)
x <- rnorm(1000)
df <- data.frame(x)

# Histograma con densidad
ggplot(df, aes(x = x)) + 
  geom_histogram(aes(y = ..density..),
                 colour = 1, fill = "white") +
  geom_density(lwd = 1, colour = 4,
               fill = 4, alpha = 0.25)

Histograma y densidad coloreada en ggplot2

También te puede interesar