2015-09-30 634 views
8

我有一張使用igraph製作的圖。我想分散節點。到目前爲止,我發現的唯一方法是縮放佈局並強制繪圖命令不重新縮放。增加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() 

如果我不重新調整,中央高度連接的節點聚集在一起,我得到這樣的圖,其中圖中的主體圖案是不可能辨別: enter image description here

在另一方面,如果我告訴繪圖命令不要重新縮放,那麼我得到這個: enter image description here

其中模式是可辨別的,但圖的一半是關閉的。這不是一個繪圖大小的問題,就像我增加png的尺寸一樣,它仍然將圖形居中在圖的邊緣。

這不是佈局的問題 - 我試過fruchterman.reingold,layout_nicely,reingold.tilford,layout.circle,佈局隨機,同樣的事情發生。

顯然曾經是一個變量來設置節點之間的斥力因子,但似乎已被棄用。

如何將圖的節點展開或重新縮放並重新繪製圖?

+0

我有類似的問題與igraph。我通過將所有頂點,邊和箭頭按比例縮小來解決它,將圖保存爲pdf,並放大對我感興趣的區域。你也可以在節點上使用半透明的顏色(例如'vertex.color =「#0000FF25」'),這有助於看透重疊圖。我希望有一個更清潔的解決方案! –

+2

[igraph axes xlim ylim plot incorrectly]可能重複(http://stackoverflow.com/questions/11272349/igraph-axes-xlim-ylim-plot-incorrectly) – Phiter

回答

2

,這不是我的答案,只是發現了計算器:
igraph axes xlim ylim plot incorrectly

基本上,你可以設置ylim和XLIM和ASP。您可以設置要顯示的圖形的哪一部分(與xlim和ylim一樣)以及兩個軸是否相互依賴。

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

然後,您可以將其標記爲重複項。 – Phiter

1

選項1:使頂點小

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

選項2(如果頂點之間的距離對你並不重要):

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

注:tkplot輸出作爲eps的圖表。如果您想進一步編輯它或將其導出爲pdf,我建議使用inkscape(我將它用於我所有的圖形編輯 - 只需在RStudio中將圖形保存爲pdf並在inkscape中進行編輯)。 對於eps的情況下,如果你在一臺Windows機器上,你將需要調整inkscape來打開這種格式。一個非常簡短的過程,這是詳細的here: