Cómo anotar clústeres con círculo/elipse mediante una variable en R ggplot2

En este artículo, discutiremos cómo anotar clústeres con círculo/elipse mediante una variable categórica en el lenguaje de programación R usando el paquete ggplot2.

Para agregar un círculo o una elipse alrededor de un grupo de puntos de datos, usamos las funciones geom_mark_circle() y geom_mark_ellipse() del paquete ggforce. Esta función calcula automáticamente el radio del círculo/elipse para dibujar alrededor del grupo de puntos por datos categóricos.

Primero, trazaremos los datos en un diagrama de dispersión usando la función geom_point del paquete ggplot2. Usaremos el parámetro de color de la función aes() para colorear el gráfico por un grupo de variables categóricas.

Sintaxis:

ggplot(df, aes( x, y ) ) + geom_point( aes( color ))

Argumentos:

  • df: determina el marco de datos a utilizar.
  • x e y: determina las variables del eje x y del eje y respectivamente.
  • color: determina la variable categórica para colorear los grupos de puntos de datos.

Ejemplo:

Aquí hay un diagrama de dispersión básico hecho usando la función geom_point() del paquete ggplot2. Hemos coloreado la gráfica por el grupo de variables categóricas.

R

# load library tidyverse
library(tidyverse)
 
# set theme
theme_set(theme_bw(16))
 
# create x and y vector
xAxis <- rnorm(1000)                
yAxis <- rnorm(1000) + xAxis + 10   
 
# create groups in variable using conditional
# statements
group <- rep(1, 1000)             
group[xAxis > -1.5] <- 2
group[xAxis > -0.5] <- 3
group[xAxis > 0.5] <- 4
group[xAxis > 1.5] <- 5
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis, group)
 
# create a scatter plot with points colored by
# group
ggplot(sample_data, aes(x = xAxis,
             y = yAxis))+
  geom_point(aes(color = as.factor(group)))

Producción:

Anotar círculos alrededor del clúster:

Para anotar un círculo alrededor de un grupo de puntos por grupo, usamos la función geom_mark_circle() del paquete ggforce. Para usar esta función, primero instalamos e importamos el paquete ggforce usando:

install. packages('ggforce')
library(ggforce)

Ahora, anotaremos el círculo alrededor de un grupo de puntos de datos usando la función geom_mark_circle().

Sintaxis:

ggplot(df, aes(x, y)) + geom_point(aes(color)) + geom_mark_circle(aes(color))

Ejemplo:

Aquí hay un gráfico de dispersión básico con círculos alrededor de un grupo de puntos de datos coloreados por un grupo de variables categóricas.

R

# load library tidyverse
library(tidyverse)
library(ggforce)
 
# set theme
theme_set(theme_bw(16))
 
# create x and y vector
xAxis <- rnorm(500)                
yAxis <- rnorm(1000) + xAxis + 10   
 
# create groups in variable using conditional
# statements
group <- rep(1, 500)             
group[xAxis > -1.5] <- 2
group[xAxis > -0.5] <- 3
group[xAxis > 0.5] <- 4
group[xAxis > 1.5] <- 5
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis, group)
 
# create a scatter plot with points colored by group
# circles are annotated using geom_mark_circle() function
ggplot(sample_data, aes(x = xAxis,
             y = yAxis))+
  geom_point(aes(color = as.factor(group)))+
  geom_mark_circle(aes(color = as.factor(group)), expand = unit(0.5,"mm"))+
  theme(legend.position = "none")

Producción:

Anote puntos suspensivos alrededor del clúster:

Para anotar una elipse alrededor de un grupo de puntos por grupo, usamos la función geom_mark_ellipse() del paquete ggforce. Esta función calcula automáticamente las dimensiones de la elipse y las superpone sobre el diagrama de dispersión.

Sintaxis:

ggplot(df, aes(x, y)) + geom_point(aes(color)) + geom_mark_ellipse(aes(color))

Ejemplo:

Aquí, hay un gráfico de dispersión básico con elipses alrededor de un grupo de puntos de datos coloreados por un grupo de variables categóricas.

R

# load library tidyverse
library(tidyverse)
library(ggforce)
 
# set theme
theme_set(theme_bw(16))
 
# create x and y vector
xAxis <- rnorm(500)                
yAxis <- rnorm(1000) + xAxis + 10   
 
# create groups in variable using conditional
# statements
group <- rep(1, 500)             
group[xAxis > -1.5] <- 2
group[xAxis > -0.5] <- 3
group[xAxis > 0.5] <- 4
group[xAxis > 1.5] <- 5
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis, group)
 
# create a scatter plot with points colored by group
# ellipses are annotated using geom_mark_ellipse() function
ggplot(sample_data, aes(x = xAxis,
             y = yAxis))+
  geom_point(aes(color = as.factor(group)))+
  geom_mark_ellipse(aes(color = as.factor(group)), expand = unit(0.5,"mm"))+
  theme(legend.position = "none")

Producción:

Personalizando la estética

Podemos personalizar la estética de la función geom_mark_* usando la propiedad de color, relleno y alfa de la función aes(). 

Sintaxis:

ggplot(df, aes( x, y ) ) + geom_point( aes( color )) + geom_mark_ellipse( aes(color, relleno, alfa) )

dónde,

  • color: determina el color del límite de los círculos o elipses.
  • relleno: determina el color de fondo de los círculos o elipses.
  • alfa: determina la transparencia de los círculos o elipses.

Ejemplo:

En este ejemplo, trazaremos un diagrama de dispersión superpuesto por elipses con un fondo coloreado por la variable categórica de grupo.

R

# load library tidyverse
library(tidyverse)
library(ggforce)
 
# set theme
theme_set(theme_bw(16))
 
# create x and y vector
xAxis <- rnorm(500)                
yAxis <- rnorm(1000) + xAxis + 10   
 
# create groups in variable using conditional
# statements
group <- rep(1, 500)             
group[xAxis > -1.5] <- 2
group[xAxis > -0.5] <- 3
group[xAxis > 0.5] <- 4
group[xAxis > 1.5] <- 5
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis, group)
 
# create a scatter plot with points colored by group
# ellipses are annotated using geom_mark_ellipse() function
ggplot(sample_data, aes(x = xAxis,
             y = yAxis))+
  geom_point(aes(color = as.factor(group)))+
  geom_mark_ellipse(aes(fill = as.factor(group)), expand = unit(0.5,"mm"))+
  theme(legend.position = "none")

Producción:

Publicación traducida automáticamente

Artículo escrito por mishrapriyank17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *