2017-04-27 1 views
0

J'ai une trame de données commePlot un graphique simple réseau en R

mydf <- data.frame(ID = c(1,2,3,4,5), MatchedID = c(3,4,2,5,1), Weight = c(12,45,5,19,9)) 

Je souhaite tracer un graphique de réseau montrant la relation entre ID et matchedID et poids que la force de cette relation. Quelle est la meilleure façon de représenter cela avec des étiquettes? J'aime ceux à https://briatte.github.io/ggnet/

Répondre

1

Vous pouvez essayer:

library(igraph) 
g <- graph_from_data_frame(mydf, directed=TRUE) 
g <- set_edge_attr(g, "weight", value = mydf$Weight) 
plot(g, edge.width = E(g)$weight/5, edge.label=E(g)$weight) 

enter image description here

Ou utiliser ggplot2

library(GGally) 
library(sna) 
library(network) 
library(tidyverse) 

mydf %>% 
    spread(MatchedID, Weight, fill = 0) %>% 
    select(-ID) %>% 
    network(names.eval = "weights", ignore.eval = FALSE) %>% 
    ggnet2(label = TRUE, edge.label = "weights") 

enter image description here

+0

Impressionnant Jimbou - cela a fonctionné – Tarak

+0

Vous êtes les bienvenus . S'il vous plaît envisager d'accepter la réponse en cliquant sur le bouton de contrôle sur le côté gauche. – Jimbou