試圖在R做網絡圖。 如何使用IGraph來加長網絡圖中的邊?如何延長igraph網絡圖(layout = fruchterman.reingold)中的邊緣?
我實際上想使用fruchterman-reingold佈局。有什麼方法可以使這種基於力的算法「更具彈性」,使我的頂點更加分離?
謝謝。
試圖在R做網絡圖。 如何使用IGraph來加長網絡圖中的邊?如何延長igraph網絡圖(layout = fruchterman.reingold)中的邊緣?
我實際上想使用fruchterman-reingold佈局。有什麼方法可以使這種基於力的算法「更具彈性」,使我的頂點更加分離?
謝謝。
您可以使用layout.fruchterman.reingold
函數來控制Fruchterman-Reingold算法。見:help('layout.fruchterman.reingold')
。我經常使用的一個設置,並且讓您獲得更多的間距:
l <- layout.fruchterman.reingold(g,niter=500,area=vcount(g)^2.3,repulserad=vcount(g)^2.8)
plot(g,layout=l)
其中g
是您的圖形對象。最好只爲圖表測試這些參數的不同值,看看有什麼作用。特別是repulserad
會影響圖形中的間距。默認值是節點數量的平方,所以更高的值應該讓你獲得更多的空間圖。
「參數'repulserad'已棄用且無效」,至少在v.1.0.1中。 。 – WAF
如果layout.fruchterman.reingold
算法仍然沒有通過調整參數給出您想要的值,只需執行以下操作即可。每個佈局都會返回一組座標,其中x和y座標分別位於第一列和第二列中。你可以在這裏應用任何你喜歡的轉換,如果你只是想縮放它,只需使用
L = layout.fruchterman.reingold(G)*s; #Scaling factor s
當然也可以使用更多花哨的轉換。爲了記錄,您還可以使用tkplot(G, layout=L)
用鼠標手動編輯佈局。您可以通過L = tkplot.getcoords(1)
獲取座標。
按常量縮放不會產生任何效果,除非您爲'igraph :: plot'函數提供'rescale = FALSE'參數 – deeenes
任何解決方案? –