web-dev-qa-db-fra.com

augmenter la distance entre les nœuds igraph

J'ai un graphique que j'ai produit en utilisant igraph. Je voudrais étaler les nœuds. Jusqu'à présent, la seule façon de le faire est de mettre à l'échelle la disposition et de forcer la commande plot à ne pas être mise à l'échelle.

png("kmeansColouredNetwork.png", width=1200,height = 1000)
col=c("yellow", "saddlebrown", "brown1","chartreuse2", "chocolate1","darkorange" ,"deepskyblue1", "hotpink1","Plum2")
for(i in 1:9){
  V(graph)$cluster[which(V(graph)$name %in% kmeans[,i])]<-col[i]
}
V(graph)$color=V(graph)$cluster
coords <- layout.fruchterman.reingold(graph)*0.5
plot(graph, layout = coords, vertex.label=NA, rescale=FALSE,  vertex.size=degree(graph)*.25,vertex.color=V(graph)$cluster)
labels = paste("cluster:", 1:length(colours))
legend("left",legend=labels, col=col, pch=16, title="K means clustered subgroups")
dev.off()

Si je ne redimensionne pas, les nœuds centraux hautement connectés s'agglutinent et j'obtiens un graphique comme celui-ci, où les modèles dans le corps du graphique sont impossibles à discerner: enter image description here

D'un autre côté, si je dis à la commande plot de ne pas redimensionner, alors j'obtiens ceci: enter image description here

où les motifs sont discernables, mais la moitié du graphique est hors de l'intrigue. Ce n'est pas une question de taille de tracé comme si j'augmentais les dimensions du png, cela centrait toujours le graphe sur le bord du tracé.

Ce n'est pas une question de mise en page - j'ai essayé fruchterman.reingold, layout_nicely, reingold.tilford, layout.circle, layout random, la même chose se produit.

Il y avait apparemment une variable pour définir un facteur de répulsion entre les nœuds, mais cela semble obsolète.

Comment répartir les nœuds du graphique ou redimensionner et recentrer le tracé?

13
Ben

Option 1: réduire les sommets

node.size= c(10,10,10)
plot(net, vertex.size=node.size*0.25)

Option 2 (au cas où les distances entre les sommets ne sont pas importantes pour vous):

# Use the tkplot option to edit your graph in GUI
tkplot (net)

Remarque: tkplot affiche le graphique au format eps. Si vous souhaitez le modifier davantage ou l'exporter au format PDF, je suggère d'utiliser Inkscape (je l'utilise pour toutes mes modifications graphiques - il suffit de sauvegarder le graphique au format PDF dans RStudio et de le modifier dans Inkscape). Pour le cas d'EPS si vous êtes sur une machine Windows, vous devrez Tweak Inkscape pour ouvrir ce format. Un processus très court et simple qui est détaillé ici:

4
user2387584

Je viens de trouver la réponse ci-dessous sur StackOverflow:
les axes igraph xlim ylim tracent incorrectement

Fondamentalement, vous pouvez définir ylim et xlim et asp. Vous pouvez définir quelle partie du graphique afficher (comme d'habitude avec xlim et ylim) et si les deux axes dépendent l'un de l'autre.

plot(g, rescale = FALSE, ylim=c(1,4),xlim=c(-17,24), asp = 0)
4
Tompa Miklos