2016-11-11 86 views
2

我已經有了一個圖,但是相對於網絡來說,自循環很大,是否有一種方法可以在不改變圖的其餘部分的情況下減少自循環大小?減小igraph中的自環的大小

測試數據:

test.matrix=cbind(mtcars$gear,mtcars$carb) 
adj.mat=get.adjacency(graph.edgelist(as.matrix(test.matrix))) 
g=graph.adjacency(adj.mat,mode="undirected") 
plot(g) 

我試圖改變curve_multiple,無果,並不能找到與減少環的大小在documentation什麼。

+3

'plot(igraph :: simplify(g))'?參見'?igraph :: simplify'。 – lukeA

+1

如果你沒有綁定到'igraph','visNetwork'包是好的,我確定你可以通過''visEdges()'](http://「selfReferenceSize'參數來控制自我循環的大小。 search.r-project.org/library/visNetwork/html/visEdges.html)。 – vincentmajor

+0

@lukeA,簡化幫助,但理想情況下,我會保持循環,只是讓它們變小。 – desc

回答

2

igraph plot函數沒有選項允許您更改循環的大小。 然而,對igraph源代碼的一個小改動就是訣竅。您可以通過運行

plot.igraph 

看到的igraph繪圖功能,你會發現的igraph積函數創建一個名爲loop功能。內部的功能,你會發現行:

cp <- matrix(c(x0, y0, x0 + 0.2, y0 + 0.1, x0 + 0.2, 
    y0 - 0.1, x0, y0), ncol = 2, byrow = TRUE) 

@desc評論說,你可以暫時使此更改的igraph:

cp <- matrix(c(x0, y0, x0 + 0.4, y0 + 0.2, x0 + 0.4, 
    y0 - 0.2, x0, y0), ncol = 2, byrow = TRUE) 

你可以通過這個改變,使寬/高循環半繪圖功能源代碼用

trace("plot.igraph",edit=TRUE) 
+1

我用'trace(「plot.igraph」,edit = TRUE)'來重置源代碼,你的解決方案完美運行!感謝你的回答。 – desc