2015-09-30 31 views
8

Ho un grafico che ho prodotto utilizzando l'igraph. Mi piacerebbe allargare i nodi. L'unico modo che ho trovato finora per farlo è quello di ridimensionare il layout e forzare il comando plot a non ridimensionarlo.aumentare la distanza tra i nodi igraph

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() 

Se non riscalare, i nodi altamente connessi centrali ciuffo insieme e ottengo un grafico come questo, in cui i modelli nel corpo del grafico sono impossibile distinguere: enter image description here

On D'altra parte, se dico al comando della trama di non ridimensionare, ottengo questo: enter image description here

dove i motivi sono distinguibili, ma metà del grafico è fuori dalla trama. Non è questione di dimensioni del plot come se aumentassi le dimensioni del png, esso centra comunque il grafico dal bordo della trama.

Non è una questione di layout: ho provato fruchterman.reingold, layout_nicely, reingold.tilford, layout.circle, layout random, la stessa cosa accade.

Apparentemente c'era una variabile per impostare un fattore di repulsione tra i nodi, ma sembra essere deprecato.

Come si diffondono i nodi del grafico o si esegue il ridimensionamento e si ripristina la trama?

+0

Ho avuto problemi simili con igraph. Ci ho lavorato intorno rendendo tutti i vertici, i bordi e le punte delle frecce proporzionalmente più piccoli, salvando il grafico come pdf e ingrandendo l'area che mi interessava. Puoi anche usare colori traslucidi per i nodi (ad es. 'Vertex.color =" # 0000FF25 "'), che aiuta a vedere attraverso la sovrapposizione. Spero comunque che ci sia una soluzione più pulita! –

+2

Possibile duplicato di [archi di igraphes xlim ylim tracciati in modo errato] (http://stackoverflow.com/questions/11272349/igraph-axes-xlim-ylim-plot-semplicemente) – Phiter

risposta

2

non è la mia risposta, appena trovato su StackOverflow:
igraph axes xlim ylim plot incorrectly

In sostanza, è possibile impostare ylim e XLIM e asp. È possibile impostare quale parte del grafico visualizzare (come al solito con xlim e ylim) e se i due assi dipendono l'uno dall'altro.

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

Potresti averlo contrassegnato come duplicato, quindi. – Phiter

1

Opzione 1: rendere i vertici più piccolo

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

Opzione 2 (nel caso in cui le distanze tra i vertici non sono importanti per voi):

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

Nota: tkplot emette il grafico come eps. Se vuoi modificarlo ulteriormente o esportarlo in pdf ti consiglio di usare inkscape (lo uso per tutto il mio editing grafico - basta salvare il grafico come pdf in RStudio e modificarlo in inkscape). Per il caso di eps, se sei su una macchina Windows dovrai modificare inkscape per aprire questo formato. Un processo molto breve e semplice che è dettagliato here: