尝试在 R 中绘制网络图。如何使用 IGraph 延长网络图中的边?
我实际上想使用 fruchterman-reingold 布局。有什么方法可以使基于力的算法“更有弹性”,以便我的顶点相距更远?
谢谢。
尝试在 R 中绘制网络图。如何使用 IGraph 延长网络图中的边?
我实际上想使用 fruchterman-reingold 布局。有什么方法可以使基于力的算法“更有弹性”,以便我的顶点相距更远?
谢谢。
layout.fruchterman.reingold
您可以使用该函数控制 Fruchterman-Reingold 算法。见:help('layout.fruchterman.reingold')
。我经常使用并让您获得更多间距的设置是:
l <- layout.fruchterman.reingold(g,niter=500,area=vcount(g)^2.3,repulserad=vcount(g)^2.8)
plot(g,layout=l)
g
您的图形对象在哪里。最好只为您的图表测试这些参数的不同值,看看有什么效果。尤其repulserad
影响图表中的间距。默认值是节点数的平方,因此更高的值应该得到更多间隔的图形。
如果layout.fruchterman.reingold
算法仍然不能通过调整参数给出你想要的,只需执行以下操作。每个布局都返回一组坐标,x 和 y 坐标分别位于第一列和第二列。您可以在此处应用您喜欢的任何转换,如果您只想扩展它,只需使用
L = layout.fruchterman.reingold(G)*s; #Scaling factor s
当然也可以进行更多花哨的转换。只是为了记录,您还可以使用鼠标手动编辑布局tkplot(G, layout=L)
。您可以通过 获取坐标L = tkplot.getcoords(1)
。