Librería

dendexten

Autor principal

Tal Galili

Dendrograma circular (polar)

La función circlize_dendrogram se puede utilizar para crear un dendrograma circular, también conocido como dendrograma polar o radial. Para ello necesitas pasar un objeto de la clase “dendrogram” a la función. Ten en cuenta que los argumentos labels_track_height y dend_track_height se usan para ajustar las etiquetas y que tanto circlize como dendextend necesitan estar instalados para ejecutar la función.

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# Matriz de distancias
d <- dist(USArrests)

# Clúster jerárquico
hc <- as.dendrogram(hclust(d))

# Dendrograma circular
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = 0.5)

Dendrograma circular en R

El dendrograma que se crea por defecto muestra las ramas hacia el exterior, pero puedes cambiarlo con facing = "inside".

# install.packages("dendextend")  
# install.packages("circlize")
library(dendextend)
library(circlize)

# Matriz de distancias
d <- dist(USArrests)

# Clúster jerárquico
hc <- as.dendrogram(hclust(d))

# Dendrograma circular interior
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = 0.5,
                    facing = "inside")

Dendrograma polar en R

Las etiquetas del dendrograma se pueden borrar si solo quieres mostrar las ramas estableciendo labels = FALSE. En este escenario es recomendable incrementar el argumento dend_track_height.

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# Matriz de distancias
d <- dist(USArrests)

# Clúster jerárquico
hc <- as.dendrogram(hclust(d))

# Dendrograma circular sin etiquetas
circlize_dendrogram(hc,
                    dend_track_height = 0.8,
                    labels = FALSE)

Dendrograma radial en R sin etiquetas

Personalización avanzada

El estilo de los dendrogramas se puede personalizasr transformando el objeto “dendrogram”. Si quieres colorear las ramas puedes usar la función color_branches, basándose en el número de grupos (k) o en una altura (h). Ten en cuenta que la función contiene un argumento llamado col que permite personalizar los colores.

Colores del dendrograma en R

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# Matriz de distancias
d <- dist(USArrests)

# Clúster jerárquico
hc <- as.dendrogram(hclust(d))

# Colores
hc <- hc %>%
  color_branches(k = 3)
# hc <- color_branches(hc, k = 4)

# Dendrograma de colores
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = 0.5)  

Las etiquetas se pueden personalizar de la misma manera que las ramas. Para ello usa la función color_labels y especifica el número de grupos o la altura.

Dendrograma circular en R con dendextend y circlize

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# Matriz de distancias
d <- dist(USArrests)

# Clúster jerárquico
hc <- as.dendrogram(hclust(d))

# Colores
hc <- hc %>%
  color_branches(k = 3) %>%
  color_labels(k = 3)

# Dendrograma con etiquetas de colores
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = 0.5)  

Por último, el tipo y grosor de las líneas se puede cambiar tal y como se muestra en el siguiente ejemplo.

Tipo de líneas del dendrograma

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# Matriz de distancias
d <- dist(USArrests)

# Clúster jerárquico
hc <- as.dendrogram(hclust(d))

# Colores y personalización de las líneas
hc <- hc %>%
  color_branches(k = 3) %>%
  set("branches_lwd", 2) %>%  # Grosor de línea
  set("branches_lty", 2) %>%  # Tipo de línea
  color_labels(k = 3)

# Estilo de las líneas del dendrograma
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = 0.5)  

También te puede interesar