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