我想繪製一個圖頂點之間的距離對應的邊權重*,我已經確定在graphviz有一種方法來繪製這樣的圖形。有沒有辦法在R中使用igraph包(特別是使用graph.adkacency)來做到這一點?根據權重可視化節點之間的距離 - 與R
感謝,
諾姆
我想繪製一個圖頂點之間的距離對應的邊權重*,我已經確定在graphviz有一種方法來繪製這樣的圖形。有沒有辦法在R中使用igraph包(特別是使用graph.adkacency)來做到這一點?根據權重可視化節點之間的距離 - 與R
感謝,
諾姆
這是你需要的三角形平等每個三角形能夠繪製這樣是不可能的一個東西。所以你只能接近它。爲此,您可以使用「強制嵌入」算法。 igraph中有幾個。我經常使用的是Fruchterman-Reingold算法。
詳見:
library("igraph")
?layout.fruchterman.reingold
注意,節點之間的距離將與絕對邊緣權重的逆有所對應。
就像Sacha Epskamp所說的,除非你的數據是完美的,否則你不能繪製一個不會違反某些三角不等式的圖。但是,有一些名爲Multidimensional scaling (MDS)的技術旨在最大限度地減少此類違規行爲。
R中的一個實現是來自stats
包的cmdscale
。我建議的例子在?cmdscale
底部:
> require(graphics)
>
> loc <- cmdscale(eurodist)
> x <- loc[,1]
> y <- -loc[,2]
> plot(x, y, type="n", xlab="", ylab="", main="cmdscale(eurodist)")
> text(x, y, rownames(loc), cex=0.8)
當然,你可以使用任何圖形軟件包繪製x
和y
(你詢問igraph
明確)。
最後,如果您搜索「多維縮放」或「MDS」,我相信您會發現很多其他實現。祝你好運。
另請注意,在'igraph'中有一個名爲'layout.mds'的函數,它似乎在全距離矩陣上執行MDS以獲得佈局座標。 – 2012-02-26 18:37:07