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)
  )