Preparación
# Carga de librerías
library(tidyverse)
library(sna)
library(igraph)
library(ggraph)
library(tidygraph)
library(readxl)
library(visNetwork)
datos <- read_excel("matrizAactores.xlsx")
# Convertimos a matriz
matdatos <- as.matrix(datos)
# Asignamos los nombres de fila
rownames(matdatos) <- matdatos[,1]
# Quitamos la primera columna (ya que ahora es el nombre de fila)
matdatos <- matdatos[,-1]
# Mostramos los nombres de las filas
paste(rownames(matdatos))
## [1] "FEEDS" "CEIR"
## [3] "Centros de Pensamiento" "CLED"
## [5] "Comunidad" "Dirección de Programa"
## [7] "Docentes" "DRII"
## [9] "Editoriales" "Egresados"
## [11] "Empresas" "Estudiantes"
## [13] "EXEC" "Gestores de Información"
## [15] "Grupos de Investigación" "IALU"
## [17] "Medios de Comunicación" "Minciencias"
## [19] "Multinacionales" "Organizaciones Intergubernamentales"
## [21] "Otras Facultades ULS" "Otras Universidades"
## [23] "Redes Académicas" "Sector Externo"
## [25] "Sector Público" "Semilleros"
## [27] "VRIT" "CIC"
## [29] "Familias" "Gremios"
## [31] "Bases de Datos" "CLEO"
## [33] "Biblioteca" "Revistas"
## [35] "Gobierno Nal, Distri, Local" "Docentes externos"
## [37] "Emprendedores"
# Dimensiones de la matriz
dimensiones <- dim(matdatos)
print(dimensiones)
## [1] 37 37
Creación del grafo
# Creamos un grafo a partir de la matriz de adyacencia
grafo <- graph_from_adjacency_matrix(as.matrix(matdatos),
mode = "undirected",
weighted = TRUE,
diag = TRUE)
# Extraemos nodos y aristas
nodos <- as_data_frame(grafo, what = "vertices")
aristas <- as_data_frame(grafo, what = "edges")
# Aseguramos que nodos tenga una columna 'id'
nodos$id <- nodos$name
aristas$id <- paste0("E", 1:nrow(aristas))
# Vector de colores para aristas según peso (1..5)
colores <- c("red", "green", "magenta", "violet", "blue")
# Asignamos el color de cada arista
aristas$color <- colores[aristas$weight]
# Opcional: mostrar la etiqueta con el peso de la arista
aristas$label <- aristas$weight
# Opciones para los nodos
nodos$color <- "lightblue"
nodos$size <- 15
Visualización de red
visNetwork(nodos, aristas) %>%
visEdges(smooth = FALSE) %>%
visOptions(highlightNearest = TRUE,
nodesIdSelection = TRUE) %>%
visLegend(
enabled = TRUE,
main = "Tipos de relaciones",
ncol = 1,
width = 0.25,
addEdges = data.frame(
label = c("R Conflictivas", "R Fluidas", "F Inexistentes",
"R Recíprocas", "R Deseables"),
color = c("red", "green", "magenta", "violet", "blue"))
) %>%
visNodes(
font = list(vadjust = -30)
)