2017-04-18 2 views
0

Il y a une dataset avec le code ci-dessous. Et j'ai besoin d'un graphique comme sur l'image, sans changer de cadre. J'ai essayé d'utiliser rbind pour ajouter plus de hiérarchie à la trame de données pour obtenir le diagramme comme dans l'image. col0 et col1 les données changent en cours de débogage sur les données tandis que col2 reste toujours le même.Comment faire pour écrire igraph dans R

df <- data.frame(col0 = c("Cat Dog Wolf", "Cat Dog Wolf", "Cat Dog Wolf"), 
col1 = c("Cat", "Dog", "Wolf"), 
col2 = c("Feline", "Canis", "Canis2")) 

df <-rbind(df, data.frame(col0="Cat Dog Wolf", col1 = "Canis2", col2 = "Canis")) 

df <-df[c('col1', 'col2')] 
names(df) <-c('from', 'to') 
abc <-union(df$to, df$from) 
g <-graph.data.frame(df, directed = TRUE, vertices = abc) 
plot(g, vertex.size = 20, vertex.label.dist = 0.5, vertex.color = "blue", 
edge.arrow.size = 0.5, layout = layout.reingold.tilford(g)) 

enter image description here

Répondre

1

Vous avez besoin de trois bords tirés de deux colonnes ("From" et "To"). Mais vous avez trois colonnes dans df de sorte que vous devez choisir parmi eux. J'ai créé une nouvelle colonne avec les noms de col1 et col2 collés ensemble. Ensuite, j'ai choisi les deux premiers sommets du haut et rbind le troisième.

df <- data.frame(col0 = "Cat Dog Wolf", 
col1 = c("Cat", "Dog", "Wolf"), 
col2 = c("Feline", "Canis", "Canis2")) 
df$col1_2 <- paste(df$col2,df$col1) 

df <- rbind(df[1:2,c(1,4)],data.frame(col0=df[2,4],col1_2=df[3,4])) 

names(df) <-c('from', 'to') 
abc <-union(df$to, df$from) 
g <-graph.data.frame(df, directed = TRUE, vertices = abc) 
plot(g, vertex.size = 20, vertex.label.dist = 0.5, vertex.color = c("lightblue","red","green","white"), 
edge.arrow.size = 0.5, layout = layout.reingold.tilford(g)) 

enter image description here

+0

Il est bonne réponse, mais j'ai toujours problème avec des couleurs –

+0

@DeividasKiznis je mis à jour ma réponse. Pour obtenir les couleurs, vous avez besoin de ceci: 'vertex.color = c (" lightblue "," red "," green "," white ")' –