Sombrear el área de una curva de densidad

La función polygon puede ser utilizada para sombrear el área bajo una curva de densidad. Tan solo necesitas pasarle el objeto density y especificar el color.

# Datos
set.seed(3)
y <- rnorm(150)

den <- density(y)

# Gráfico
plot(den)

# Sombrear área
polygon(den, col = "slateblue1")

Sombrear el área bajo la curva de densidad en R

Colorear el área con un color con transparencia

Si estás dibujando varias curvas de densidad y algunas de ellas se solapan es recomendable utilizar colores con transparencia, de modo que puedas ver ambas curvas. Para este propósito puedes utilizar la función rgb y especificar la transparencia (entre 0 y 1) en el argumento alpha. Consulta la sección de colores si necesitas convertir colores HEX en RGB.

Colorear el área bajo la curva de densidad con un color con transparencia en R

# Datos
set.seed(3)
x <- rnorm(200)
y <- rnorm(150, mean = 1)

# Estimaciones de densidad
denx <- density(x)
deny <- density(y)

# Gráfico
plot(denx,
     ylim = c(0, max(c(denx$y, deny$y))),
     xlim = c(min(c(denx$x, deny$x)),
              max(c(denx$x, deny$x))))
lines(deny)

# Colorear las áreas
polygon(denx, col = rgb(0.78, 0.89, 1, alpha = 0.6))
polygon(deny, col = rgb(0.51, 0.44, 1, alpha = 0.6))

Colorear un área especifica de la curva de densidad

También puedes sombrear áreas específicas bajo las curvas, como por ejemplo el área mayor que determinado punto, el área menor a cierto punto o el área entre dos puntos del eje X.

Colorear el área para valores mayores que 1

# Datos
set.seed(3)
y <- rnorm(150)

# Estimación densidad
den <- density(y)

# Gráfico
plot(den)

# Sombrear área for para valores mayores o iguales a 1
value <- 1

polygon(c(den$x[den$x >= value ], value),
        c(den$y[den$x >= value ], 0),
        col = "slateblue1",
        border = 1)

Colorear el área para valor mayores a un punto en R

Colorear el área para valores menores que 1

# Datos
set.seed(3)
y <- rnorm(150)

# Density estimation
den <- density(y)

# Gráfico
plot(den)

# Sombrear área for values lower or equal to 1
value <- 1

polygon(c(den$x[den$x >= value ], value),
        c(den$y[den$x >= value ], 0),
        col = "slateblue1",
        border = 1)

Sombrear el área en un área específica en R

Sombrear el área entre -1 y 1

# Datos
set.seed(3)
y <- rnorm(150)

# Density estimation
den <- density(y)

# Gráfico
plot(den)

# Área entre -1 y 1
valor1 <- -1
valor2 <- 1

# Índices inferior y superior del eje X
l <- min(which(den$x >= valor1))
h <- max(which(den$x < valor2))

polygon(c(den$x[c(l, l:h, h)]),
        c(0, den$y[l:h], 0),
        col = "slateblue1")

Sombrear el área entre dos valores en R

También te puede interesar