试图在R做网络图。 如何使用IGraph来加长网络图中的边?如何延长igraph网络图(layout = fruchterman.reingold)中的边缘?
我实际上想使用fruchterman-reingold布局。有什么方法可以使这种基于力的算法“更具弹性”,使我的顶点更加分离?
谢谢。
试图在R做网络图。 如何使用IGraph来加长网络图中的边?如何延长igraph网络图(layout = fruchterman.reingold)中的边缘?
我实际上想使用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
会影响图形中的间距。默认值是节点数量的平方,所以更高的值应该让你获得更多的空间图。
“参数'repulserad'已弃用且无效”,至少在v.1.0.1中。 。 – WAF
如果layout.fruchterman.reingold
算法仍然没有通过调整参数给出您想要的值,只需执行以下操作即可。每个布局都会返回一组坐标,其中x和y坐标分别位于第一列和第二列中。你可以在这里应用任何你喜欢的转换,如果你只是想缩放它,只需使用
L = layout.fruchterman.reingold(G)*s; #Scaling factor s
当然也可以使用更多花哨的转换。为了记录,您还可以使用tkplot(G, layout=L)
用鼠标手动编辑布局。您可以通过L = tkplot.getcoords(1)
获取坐标。
按常量缩放不会产生任何效果,除非您为'igraph :: plot'函数提供'rescale = FALSE'参数 – deeenes
任何解决方案? –