我正在尝试绘制一个图形,其中顶点之间的距离对应于边缘权重*我发现在graphviz中有一种方法来绘制这样的图形。有没有办法在R中使用igraph包(特别是用graph.adkacency)来做这个?
谢谢,
诺姆
答案 0 :(得分:4)
这是不可能的,因为每个三角形都需要三角形相等才能绘制这样的对象。所以你只能近似它。为此,您可以使用“强制嵌入”算法。 igraph中有一些。我经常使用的是Fruchterman-Reingold算法。
详见:
library("igraph")
?layout.fruchterman.reingold
请注意,节点之间的距离将与绝对边缘权重的倒数略有对应。
答案 1 :(得分:3)
R中的一个实现是来自cmdscale
包的stats
。我推荐?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”,我相信你会发现很多其他的实现。祝你好运。