【问题标题】:Getting x,y coordinates for tree graph using R igraph使用 R igraph 获取树图的 x,y 坐标
【发布时间】:2012-12-13 19:36:51
【问题描述】:

我正在使用 R 创建一组 x,y 坐标来绘制组织结构图,并且正在努力获得非径向布局。我将使用这些坐标在另一个应用程序中绘制图形,因此需要坐标而不是绘图。

我的数据是一个 2 列数据框,显示与 EmployeeID、ManagerID 列的报告关系。

我正在使用包 igraph 并首先使用以下方法创建图表:

g<-graph.data.frame(dataframe)

检查E(g)我得到了我期望的优势。绘制图形以径向形式给出正确的结构。

我的理解是 reingold.tilford 算法是我想用来获得传统非径向树的算法。所以我创建了一个布局:

l<-layout.reingold.tilford(g)

这应该给了我我的 x,y 坐标,但是当我查看 l 时,我会得到类似的东西:

       [,1]           [,2]
 [1,]  0.000000e+00    3    
 [2,]  0.000000e+00    3    
 [3,]  0.000000e+00    1    
 [4,]  1.899762e-52    3
 [5,]  1.224168e-17    3   
 [6,]  6.582031e-85    3
 [7,] 5.626306e+175    3

再次绘制图表:

plot(g,l)

给我一​​个警告信息:

In if (axes) { :
  the condition has length > 1 and only the first element will be used

和以前一样的径向图。此外

summary(g)

给予:

IGRAPH DN-- 25 24 -- 
attr: name (v/c)

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    似乎是 Reingold-Tilford 算法实现中的一个错误;至少布局第 7 行的 X 坐标很奇怪。我会在 igraph-help mailing list 上问同样的问题,并发送一个小示例图,作者可以在上面重现您的问题。

    编辑:在检查了您在邮件列表中发送的示例图之后,似乎 1)这是 Reingold-Tilford 实现中的一个错误,并且 2)它可以解决,如果您反转所有边缘,使它们在树中指向下方(从父级到子级),因为这是 Reingold-Tilford 布局算法所假设的,并且它会给您错误的结果,因为它没有为指向“错误”方向的边缘做好准备.更高版本的 igraph 将包含针对该问题的补丁。感谢您的提醒!

    编辑 2:作为记录,上述错误已得到解决,并将包含在 igraph 0.6.1 中。有关更多信息,请参阅 the corresponding bug reportassociated patch

    【讨论】:

    • 谢谢;更新了我上面的回复,并将回复发布到邮件列表。
    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多