El siguiente data frame contiene tres distribuciones normales con diferente media y desviación típica separadas por grupo. Estos datos serán usados en todos los ejemplos de este tutorial.
# Datos
set.seed(5)
x <- c(rnorm(200, mean = -2, 1.5),
rnorm(200, mean = 0, sd = 1),
rnorm(200, mean = 2, 1.5))
grupo <- c(rep("A", 200), rep("B", 200), rep("C", 200))
df <- data.frame(x, grupo)
geom_density
Para crear un gráfico de densidad por grupo en ggplot necesitas pasar la variable numérica y especificar la variable categórica en el argumento color
(o colour
) dentro de aes
y usar la función geom_density
.
# install.packages("ggplot2")
library(ggplot2)
# Gráfico de densidad en ggplot2
ggplot(df, aes(x = x, colour = grupo)) +
geom_density()
La paleta de colores por defecto para las líneas se puede personalizar con scale_color_manual
(o scale_color_brewer
, por ejemplo). También puedes cambiar el ancho y el tipo de línea de las curvas lwd
y linetype
, respectivamente.
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#F76D5E", "#FFFFBF", "#72D8FF")
# Gráfico de densidad en ggplot2
ggplot(df, aes(x = x, colour = grupo)) +
geom_density(lwd = 1.2, linetype = 1) +
scale_color_manual(values = cols)
Si pasas también la variable categórica a fill
dentro de aes
las áreas se colorearán. Ten en cuenta que puedes eliminar colour = grupo
o establecer el color que quieras si no quieres colorear las líneas por grupo.
# install.packages("ggplot2")
library(ggplot2)
# Gráfico de densidad en ggplot2
ggplot(df, aes(x = x, colour = grupo, fill = grupo)) +
geom_density()
Transparencia y personalización de los colores
Puedes modificar la transparencia de las áreas con el argumento alpha
de geom_density
y establecer los colores que quieras con scale_fill_manual
.
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#F76D5E", "#FFFFBF", "#72D8FF")
# Gráfico de densidad en ggplot2
ggplot(df, aes(x = x, fill = grupo)) +
geom_density(alpha = 0.7) +
scale_fill_manual(values = cols)
Eliminar las líneas
Si quieres eliminar las líneas y mostrar solo el área puedes pasar color = NA
dentro de geom_density
.
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#F76D5E", "#FFFFBF", "#72D8FF")
# Áreas de las densidades sin líneas
ggplot(df, aes(x = x, fill = grupo)) +
geom_density(alpha = 0.8, color = NA) +
scale_fill_manual(values = cols)
Título
El título por defecto (el nombre de la variable categórica) se puede personalizar con el siguiente código.
# install.packages("ggplot2")
library(ggplot2)
# Gráfico de densidades en ggplot2
ggplot(df, aes(x = x, fill = grupo)) +
geom_density() +
guides(fill = guide_legend(title = "Título"))
Etiquetas
También puedes agregar etiquetas personalizadas si no quieres usar los nombres de la variable categórica. Ten en cuenta que puedes usar scale_fill_hue
si solo quieres cambiar las etiquetas o usar el argumento labels
de scale_fill_manual
si también quieres cambiar los colores de las áreas.
# install.packages("ggplot2")
library(ggplot2)
# Personalizar las etiquetas
ggplot(df, aes(x = x, fill = grupo)) +
geom_density() +
scale_fill_hue(labels = c("G1", "G2", "G3"))
Eliminar la leyenda
Si quieres deshacerte de la leyenda, que se crea por defecto, puedes cambiar su posición a "none"
.
# install.packages("ggplot2")
library(ggplot2)
# Gráfico de densidades en ggplot2
ggplot(df, aes(x = x, fill = grupo)) +
geom_density() +
theme(legend.position = "none")
También te puede interesar