我想绘制一个图顶点之间的距离对应的边权重*,我已经确定在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