尝试在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)
获取坐标。
igraph::plot
函数中提供 rescale=FALSE
参数。 - deeenes