Trazar dendrograma con R y ggraph

En este artículo, vamos a ver cómo personalizar el dendrograma. También se conoce como diagrama de árbol y es una representación visual de la relación jerárquica entre elementos. El objetivo principal de un dendrograma es descubrir el mejor enfoque para asignar objetos a los grupos. 

Creación de dendrograma básico

Para crear un dendrograma utilizaremos el paquete igraph que se utiliza para crear y manipular gráficos y analizar gráficos de redes. Entonces, para crear un dendrograma, crearemos un marco de datos en la estructura de datos jerárquica y luego lo transformaremos en una lista de bordes. Para graficar un Dendrograma usaremos la siguiente sintaxis:

ggraph(conjunto de datos, diseño)

Parámetros:

  • Marco de datos: conjunto de datos/vector jerárquico
  • diseño: Dimensión del diseño
  • Circular: Verdadero/Falso

Sintaxis para instalar e importar el paquete igraph en la consola de trabajo de R:

instalar.paquete(‘igraph’)

biblioteca (igraph)

Hay algunas funciones opcionales para crear un borde en diagonal, usaremos los métodos geom_edge_diagonal() y para agregar Nodes en un gráfico usaremos los métodos geom_node_point() .

R

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram', circular = FALSE) +
  geom_edge_diagonal() +
  geom_node_point() +
  theme_void()

Producción:

Dendograma de diseño circular

Para crear un diseño circular, usaremos circular = True, que lo trazará en el diseño circular.

R

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# plot
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram', circular = TRUE) +
  geom_edge_diagonal()+
  geom_edge_diagonal() +
  geom_node_point() +
  theme_void()

Producción:

Dendograma de estilo de borde

Para hacer el dendrograma de borde recto usaremos los métodos geom_edge_diagonal() .

R

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_link()+
  geom_node_point() +
  theme_void()

Producción:

Etiquetas en Dendrograma

Para agregar las etiquetas al dendrograma, usaremos geom_node_text() que agregará las etiquetas al gráfico en una estructura jerárquica.

R

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_diagonal() +
  geom_node_text(aes( label=name)) +
  theme_void()

Producción:

Personalizar etiquetas en Dendrogram

Para personalizar etiquetas en Dendrogram usamos geom_node_text() que agregará las etiquetas junto con el color en el gráfico en la estructura jerárquica

R

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_diagonal() +
  geom_node_text(aes( label=name, color="red")) +
  theme_void()

Producción:

Personalizar Nodes en Dendrogram

Para personalizar etiquetas en Dendrogram usamos geom_node_point() que agregará los Nodes junto con el color en el gráfico en una estructura jerárquica

R

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
 
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_diagonal() +
  geom_node_text(aes( label=name, color="red")) +
  geom_node_point(aes(color ="Blue"))+
theme_void()

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam 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 *