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