r - 使用 R igraph 获取 TreeMap 的 x,y 坐标

标签 r igraph

我正在使用 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)

最佳答案

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

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

编辑2:郑重声明,上述错误已得到解决,并将包含在 igraph 0.6.1 中。请参阅the corresponding bug report欲了解更多信息和 associated patch .

关于r - 使用 R igraph 获取 TreeMap 的 x,y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13867120/

相关文章:

r - 在 R 中获取列名到数组

r - R 中的 MCMC 变点模型

python - Gamma 回归仅截距

r - 计算二分 R igraph 中的 4 和 6 周期

r - 按顶点名称的边序列

r - 如何比较两种不同的日期格式?

c# - 按组填写缺失日期

python - python-igraph 错误 'module' 对象没有属性 'Graph'

r - 使用 igraph 将边缘属性显示为标签

python - 在 python 中使用 iGraph 进行社区检测并将每个节点的社区编号写入 CSV