es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo colorear los bordes en una red multiplex con R

Actualmente estoy analizando una red múltiple basada en un conjunto de datos creado por mí.

Quiero poder trazar la red de manera que pueda asignar colores diferentes a los dos tipos de enlaces en mi red múltiple.

La lista de enlaces de esta red luce así: edgelist

  • La red múltiple se llama multi_g.
  • Es un objeto de igraph.
  • Los dos tipos de enlaces son trade_tie y bilateralaid_tie.
  • Los enlaces se encuentran en columnas diferentes de la lista de enlaces y, por lo tanto, en atributos de enlace separados.

Intenté trazarla con el siguiente código:

plot(multi_g, 
     edge.color=c("brown", "green")[E(multi_g)$trade_tie+E(multi_g)$bilateralaid_tie],
     edge.arrow.size = 0.5,
     vertex.color="gray40", 
     vertex.label.color = "black",
     layout= layout_with_fr)

Al usar esta fórmula, muchos enlaces no se trazan.

Muchas gracias de antemano por tu ayuda.

Si hay alguna forma de trazarlo con ggraph, también lo apreciaría mucho.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asignar diferentes colores a los dos tipos de aristas en la red multiplex utilizando igraph, puedes modificar el argumento de color de las aristas de la siguiente manera:

    plot(multi_g, 
         edge.color = ifelse(E(multi_g)$trade_tie == 1, "brown", "green"),
         edge.arrow.size = 0.5,
         vertex.color = "gray40", 
         vertex.label.color = "black",
         layout = layout_with_fr)
    

    Explicación del código:

    • ifelse(E(multi_g)$trade_tie == 1, "brown", "green"): Esta expresión asigna el color “brown” a las aristas de trade_tie que tienen el valor 1 (es decir, que existen) y “green” a las aristas de bilateralaid_tie.
    • layout_with_fr es un algoritmo de disposición utilizado para posicionar los vértices en el gráfico.

    En cuanto a tu comentario sobre el uso de ggraph para representar la red con diferentes colores para los dos tipos de aristas, aquí tienes un ejemplo:

    library(ggraph)
    library(igraph)
    
    multi_g %>% 
      as_tbl_graph() %>% 
      ggraph(layout = "fr") + 
        geom_edge_link(aes(color = edge_type)) + 
        scale_edge_color_manual(values = c("brown", "green")) + 
        geom_node_point(color = "gray40") + 
        geom_node_text(aes(label = name), color = "black") + 
        theme_void()
    

    Explicación del código:

    • as_tbl_graph() convierte el objeto igraph a un objeto tbl_graph que se puede utilizar con ggraph.
    • geom_edge_link(aes(color = edge_type)) asigna el color de las aristas en función del atributo edge_type.
    • scale_edge_color_manual(values = c("brown", "green")) asigna los valores de color a los dos tipos de aristas.
    • geom_node_point() y geom_node_text() se utilizan para mostrar los vértices y sus etiquetas.
    • theme_void() elimina el tema predeterminado.

Comments are closed.