2016-09-02 3 views
7

Ich habe ein Diagramm mit einigen hundert Knoten und Kanten. Die getrennten Teilgraphen trennen sich und lösen sich gut auf, aber die Knoten in Teilgraphen überschneiden sich und lösen sich nicht gut auf. Ich habe verschiedene Layoutalgorithmen ausprobiert und habe auch versucht, die relevanten Parameter innerhalb des Layout-Algorithmus zu ändern (zB: iter, kkconst, start.temp usw.). Aber ich bin immer noch nicht in der Lage, die eng geclusterten Knoten zu verteilen. Siehe Abbildung unten.igraph: Auflösung enger überlappender Knoten

Ich hatte gehofft, einen Parameter zu finden, um die Anziehung/Abstoßung/Schwerkraft usw. zu kontrollieren, aber es scheint keine zu geben. Die Antwort und Zahlen von bdemarest in diesem question scheint genau dieses Problem zu beheben. Seltsamerweise wurden einige scheinbar nützliche Parameter in der neuen Version von igraph (coolexp, maxdelta, area, repulserad usw.) veraltet.

Kennt jemand eine Möglichkeit, die Untergraphen gut getrennt zu halten, während benachbarte Knoten gut genug verteilt sind, dass sie sich nicht überlappen?

graphs

Antwort

5

Ich schaffte es qgraph mit Paket zur Arbeit zu kommen.

enter image description here

Hier ist ein funktionierendes Beispiel:

library(igraph) 
library(qgraph) 

g <- barabasi.game(355, directed=FALSE) 

png("plot1.png", height=6, width=12, units="in", res=250) 
par(mfrow=c(1, 3)) 

plot(g,layout=layout_with_fr,vertex.size=4,vertex.label=NA) 
mtext("layout_with_fr", side=1) 

e <- get.edgelist(g) 
l <- qgraph.layout.fruchtermanreingold(e,vcount=vcount(g)) 
plot(g,layout=l,vertex.size=4,vertex.label=NA) 
mtext("qgraph.layout.fruchtermanreingold default", side=1) 

l <- qgraph.layout.fruchtermanreingold(e,vcount=vcount(g), 
     area=8*(vcount(g)^2),repulse.rad=(vcount(g)^3.1)) 
plot(g,layout=l,vertex.size=4,vertex.label=NA) 
mtext("qgraph.layout.fruchtermanreingold modified", side=1) 

dev.off() 

fig2

+0

@mf In Sie den Code 'e <- get.edgelist (g)' muss Index enthalten. Dann brauchen Sie eine Änderung für 'e <- get.edgelist (g, names = False)' – fmassica