Considera el siguiente data frame para este tutorial, que consiste en dos variables numéricas y una categórica con tres grupos distintos.
set.seed(2)
# Simulación de datos
x <- runif(500)
y <- 4 * x ^ 2 + rnorm(length(x), sd = 4)
grupo <- ifelse(x < 0.4, "A",
ifelse(x > 0.8, "C", "B"))
x <- x + runif(length(x), -0.15, 0.15)
# Data frame
df <- data.frame(x = x, y = y, grupo = grupo)
stat_ellipse
Elipse por defecto
Puedes agregar una elipse a tu diagrama de dispersión añadiendo la capa stat_ellipse
, tal y como se muestra en el ejemplo siguiente.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y)) +
geom_point() +
stat_ellipse()
Personalización
El color, el tipo y ancho de línea de las elipses se puede personalizar con los argumentos color
, linetype
y lwd
, respectivamente.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y)) +
geom_point() +
stat_ellipse(color = 2,
linetype = 2,
lwd = 1.2)
Intervalos de confianza
Por defecto, la función stat_ellipse
dibuja un intervalo de confianza del 95% para una distribución t multivariante. Puedes modificar este nivel con el argumento level
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y)) +
geom_point() +
stat_ellipse(level = 0.9) +
stat_ellipse(level = 0.95, color = 2) +
stat_ellipse(level = 0.99, color = 3)
Segmentos
El número por defecto de segmentos que se utilizan para crear la elipse es 51, pero puedes modificar este número con el argumento segments
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y)) +
geom_point() +
stat_ellipse(segments = 10)
Elipses por grupo
Cuando creas un gráfico de dispersión por grupo, las elipses se crean para cada grupo.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = grupo)) +
geom_point() +
stat_ellipse()
Tipo de línea por grupo
También puedes cambiar el tipo de línea de las elipses basándose en el grupo, pasando la variable categórica al argumento linetype
de la función aes
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = grupo,
linetype = grupo)) +
geom_point() +
stat_ellipse()
Color del área
La función stat_ellipse
usa geom_path
por defecto para crear las elipses, pero si estableces geom = "polygon"
se creará un polígono con área. Ten en cuenta que puedes cambiar el grado de transparencia con alpha
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y))+
geom_point() +
stat_ellipse(geom = "polygon",
fill = 4, alpha = 0.25)
Color del área por grupo
Si creas un diagrama de dispersión por grupo y estableces geom = "polygon"
dentro de stat_ellipse
las áreas se colorearán por grupo.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = grupo)) +
geom_point() +
stat_ellipse(geom = "polygon",
aes(fill = grupo))
Color y transparencia del área por grupo
Tal y como se mostró en uno de los ejemplos anteriores, el argumento alpha
se puede utilizar para establecer el grado de transparencia de las áreas.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = grupo)) +
geom_point() +
stat_ellipse(geom = "polygon",
aes(fill = grupo),
alpha = 0.25)
Elipse normal
Por defecto, la función stat_ellipse
asume una distribución t multivariante (type = "t"
). Sin embargo, puedes establecer type = "norm"
para asumir una distribución normal multivariante.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = grupo)) +
geom_point() +
stat_ellipse(type = "t") +
stat_ellipse(type = "norm", linetype = 2)
Elipse euclídea
La opción restante es establecer type = "euclid"
para dibujar una elipse euclídea. Ten en cuenta que la elipse no se verá circular salvo que establezcas coord_fixed
. En este escenario, si estableces un intervalo con level
, el nivel será el radio del círculo dibujado.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = grupo)) +
geom_point() +
stat_ellipse(type = "euclid")
También te puede interesar