La función chordDiagram
se puede usar con una matriz de adyacencia o un data frame. En el siguiente bloque de código se crea una matriz y su data frame equivalente.
set.seed(1)
m <- matrix(sample(15, 15), 5, 3)
rownames(m) <- paste0("Fila", 1:5)
colnames(m) <- paste0("Col", 1:3)
# O usa un data frame
df <- data.frame(from = rep(rownames(m), ncol(m)),
to = rep(colnames(m), each = nrow(m)),
value = as.vector(m))
Dada una matriz o un data frame puedes pasarlo a la función chordDiagram
del paquete circlize
. La función conectará los valores de la matriz con arcos asignando colores aleatorios para cada arco cada vez que ejecutes la función.
# install.packages("circlize")
library(circlize)
chordDiagram(m)
# Resetea los parámetros gráficos circulares
circos.clear()
Colores del grid
Los colores que representan cada columna o fila de la matriz se pueden personalizar pasando un vector de nombres al argumento grid.col
de la función.
# install.packages("circlize")
library(circlize)
colors <- c(Col1 = "lightgrey", Col2 = "grey",
Col3 = "darkgrey", Fila1 = "#FF410D",
Fila2 = "#6EE2FF", Fila3 = "#F7C530",
Fila4 = "#95CC5E", Fila5 = "#D0DFE6")
chordDiagram(m, grid.col = colors)
circos.clear()
Transparencia
El argumento transparency
controla el grado de transparencia de los arcos, cuanto menos sea más opaco será el color. El valor por defecto es 0.5.
# install.packages("circlize")
library(circlize)
colors <- c(Col1 = "lightgrey", Col2 = "grey",
Col3 = "darkgrey", Fila1 = "#FF410D",
Fila2 = "#6EE2FF", Fila3 = "#F7C530",
Fila4 = "#95CC5E", Fila5 = "#D0DFE6")
chordDiagram(m, grid.col = colors,
transparency = 0.2)
circos.clear()
Color de los enlaces
Los colores de los enlaces se pueden cambiar con el argumento col
. Tendrás que especificar tantos colores como número de elementos tenga la matriz. Alternativamente puedes usar row.col
y column.col
.
# install.packages("circlize")
library(circlize)
colors <- c(Col1 = "red", Col2 = "green",
Col3 = "blue", Fila1 = "#FF410D",
Fila2 = "#6EE2FF", Fila3 = "#F7C530",
Fila4 = "#95CC5E", Fila5 = "#D0DFE6")
chordDiagram(m, grid.col = colors,
col = hcl.colors(15))
circos.clear()
Usar una paleta de colores
Ten en cuenta que el argumento col
también admite una función de color creada con colorRamp2
, tal y como se muestra en el siguiente ejemplo.
# install.packages("circlize")
library(circlize)
colors <- c(Col1 = "red", Col2 = "green",
Col3 = "blue", Fila1 = "#FF410D",
Fila2 = "#6EE2FF", Fila3 = "#F7C530",
Fila4 = "#95CC5E", Fila5 = "#D0DFE6")
cols <- colorRamp2(range(m), c("#E5FFFF", "#003FFF"))
chordDiagram(m, grid.col = colors, col = cols)
circos.clear()
Bordes de los enlaces
El borde de los enlaces se puede personalizar con link.lwd
, link.lty
y link.border
para el ancho, el tipo y el color de las líneas de los enlaces.
# install.packages("circlize")
library(circlize)
cols <- hcl.colors(15, "Temps")
chordDiagram(m,
col = cols,
transparency = 0.1,
link.lwd = 1, # Ancho de línea
link.lty = 1, # Tipo de línea
link.border = 1) # Color del borde
circos.clear()
Borde para filas específicas
Cabe destacar que el argumento link.border
acepta una matriz como entrada. En el siguiente ejemplo estamos destacando la tercera fila de la matriz.
# install.packages("circlize")
library(circlize)
cols <- hcl.colors(15, "Geyser")
mb <- matrix("black", nrow = 1, ncol = ncol(m))
rownames(mb) <- rownames(m)[3] # Tercera fila
colnames(mb) <- colnames(m)
chordDiagram(m,
col = cols,
transparency = 0.1,
link.lwd = 2, # Grosor de línea
link.lty = 2, # Tipo de línea
link.border = mb) # Color del borde
circos.clear()
Por defecto se crean anotaciones para los nombres de los sectores, el grid y los ejes.
Grid
Estableciendo annotationTrack = "grid"
se añadirá solo el grid. La altura se puede personalizar con annotationTrackHeight
.
# install.packages("circlize")
library(circlize)
chordDiagram(m, column.col = c("red", "green", "blue"),
annotationTrack = "grid",
annotationTrackHeight = c(0.04, 0.02))
circos.clear()
Nombres y grid
También puedes agregar los nombres y el grid y evitar dibujar los ejes.
# install.packages("circlize")
library(circlize)
chordDiagram(m, column.col = c("red", "green", "blue"),
annotationTrack = c("name", "grid"))
circos.clear()
Sin anotaciones
Por último, si quieres eliminar todas las anotaciones establece el argumento annotationTrack
como NULL
.
# install.packages("circlize")
library(circlize)
chordDiagram(m, column.col = c("red", "green", "blue"),
annotationTrack = NULL)
circos.clear()
También te puede interesar