2017-09-26 16 views
2

J'ai données de données du réseau comme suit:graphique Arbre formatage dans igraph R

library(igraph) 

dnode<-c("a","b","c","d","e","f","g","h","i","j","k") 

dedge<-data.frame("From"=c("a","b","c","d","e","f","f","f","f","f"), "To"=c("f","f","f","f","f","g","h","i","j","k")) 

Quand je conspire dans le code RI d'écriture comme suit:

net <- graph_from_data_frame(d=dedge, vertices=dnode, directed=T) 

l<- layout_as_tree 

plot(net, vertex.shape="square", layout=l, edge.arrow.mode=2, edge.arrow.width=2, edge.arrow.size=0.1) 

je reçois la sortie comme ceci:

enter image description here

Je veux sortie comme ceci:

enter image description here

Répondre

1

Essayez d'utiliser la disposition Sugiyama. La syntaxe est un peu différente des autres mises en page. Plutôt que de passer un réseau à plot et de mettre en page l'argument layout, vous transmettez layout$extd_graph et aucun argument de disposition. Je trouve la disposition de Sugiyama beaucoup plus flexible à utiliser avec des dispositions en couches.

l <- layout_with_sugiyama(net) 
plot(l$extd_graph, 
    vertex.shape="square", 
    vertex.label=as_ids(V(net)), 
    edge.arrow.mode=2, 
    edge.arrow.width=2, 
    edge.arrow.size=0.1) 

enter image description here

+0

Merci beaucoup, vraiment beaucoup aidé. – Vinod

+0

comment augmenter l'espace entre deux vertex. Dans le cas ci-dessus, nous avons 5 sommet vers le haut et 5 vers le bas. Lorsque j'essaie de tracer 25-30 sommets, ils se chevauchent et ne sont pas visibles. si j'utilise "hgap", il n'accepte que deux valeurs 0 ou 1. – Vinod