有时候,当使用布局算法(例如layout.fruchterman.reingold)时,你可以得到一些异常值的节点,它们从结构的其余部分不成比例地延伸出来。有没有人知道如何在边缘上施加最大长度(例如= 1),以便边缘不能超过最大长度,从而消除这些异常值?
l <- layout.fruchterman.reingold(subgraph)
顺便说一句,我知道有一个比例因子已经用来控制事物:
l <- layout.fruchterman.reingold(subgraph) * scaleFactor
答案 0 :(得分:1)
Fruchterman-Reingold算法中没有内置功能(我怀疑使用xmin
,ymin
,xmax
和ymax
不起作用因为它可能只是“压缩”网络的非异常部分,为异常值腾出更多空间),但你可以尝试边缘权重。当FR布局算法与权重一起使用时,算法将努力使具有较大权重的边缘更短。您可以尝试将入射到“异常值”顶点(即度数为1或2的顶点)的权重设置为较小的值。另一种可能性是使边缘权重取决于两个端点的度数,使得较小的度数被映射到较小的值但较大的度数不被映射到不成比例的较大值 - 可能是度数的几何平均值。这两个端点在这里很有用。但据我所知,没有“通用”解决方案,所以你必须进行一些实验。
答案 1 :(得分:-1)
当使用依赖于非基本功能的示例提问时,请记住记下他们所在的包。
(对于那些想知道的人,它是igraph中的。)
用于fruchterman-reingold布局方法的igraph文档包含&#34; arguments&#34;:
<强> XMIN,XMAX 强>
第一个坐标的限制,如果其中一个或两个都为NULL,则不会沿此方向执行标准化。
<强> YMIN,YMAX 强>
第二个坐标的限制,如果其中一个或两个都为NULL,则不会沿此方向执行标准化。
<强> ZMIN,ZMAX 强>
第三个坐标的限制,如果其中一个或两个都为NULL,则不会沿此方向执行标准化。
...所以,在x和y上设置限制?除非它是一个三维图形,否则Z是不必要的。