【问题标题】:Visualizing distance between nodes according to weights - with R根据权重可视化节点之间的距离 - 使用 R
【发布时间】:2012-03-16 04:05:35
【问题描述】:

我正在尝试绘制一个图,其中顶点之间的距离对应于边权重*,我发现在 graphviz 中有一种方法可以绘制这样的图。有没有办法在 R 中使用 igraph 包(特别是使用 graph.adkacency)来做到这一点?

谢谢,

诺姆

【问题讨论】:

    标签: r distance igraph


    【解决方案1】:

    这是不可能的,因为每个三角形都需要三角形相等才能绘制这样的对象。所以你只能近似它。为此,您可以使用“强制嵌入”算法。 igraph中有几个。我经常使用的是 Fruchterman-Reingold 算法。

    查看详情:

    library("igraph")
    ?layout.fruchterman.reingold
    

    编辑:

    请注意,节点之间的距离将与绝对边缘权重的倒数有些对应。

    【讨论】:

      【解决方案2】:

      就像 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)
      

      当然,您可以使用任何图形包绘制xy(您专门询问igraph)。

      最后,如果您搜索“多维缩放”或“MDS”,我相信您会发现很多其他实现。祝你好运。

      【讨论】:

      • 另请注意,igraph 中有一个名为 layout.mds 的函数,它似乎对全距离矩阵执行 MDS 以获得布局坐标。
      猜你喜欢
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      相关资源
      最近更新 更多