基于社区更改 IGraph 图中的布局结构
Change Layout Structure in IGraph Plot based on Community
我创建了一个标识了社区成员的 igraph:
fc <- fastgreedy.community(graph)
colors <- rainbow(max(membership(fc)))
这为我提供了每个节点所属的集群。
现在当我绘制这个时:
plot(graph,vertex.color=colors[membership(fc)],
layout=layout.kamada.kawai)
它不提供根据成员资格专门分隔每组节点的布局。有谁知道可以提供这个的不同布局?所有这一切都是采用布局:kamada.kawai 并在成员中着色,而不是重构布局以便按成员组织。
希望这个问题是有道理的。谢谢!
您必须使用人工权重向量计算 Kamada-Kawai 布局,该权重向量将高权重分配给集群内的边,并将低权重分配给跨集群边界的边:
> graph <- grg.game(100, 0.2) # example graph
> cl <- fastgreedy.community(graph)
> weights <- ifelse(crossing(cl, graph), 1, 100)
> layout <- layout_with_kk(graph, weights=weights)
> plot(graph, layout=layout)
这里的技巧是 ifelse(crossing(cl, graph), 1, 100)
部分——crossing(cl, graph)
采用聚类和聚类所属的图,returns 一个布尔向量,它为每条边定义是否边缘是否跨越集群边界。然后 ifelse()
调用简单地用 1 替换此向量中的 TRUE
(即边交叉边界),用 0 替换 FALSE
(即边留在簇内)。
我创建了一个标识了社区成员的 igraph:
fc <- fastgreedy.community(graph)
colors <- rainbow(max(membership(fc)))
这为我提供了每个节点所属的集群。
现在当我绘制这个时:
plot(graph,vertex.color=colors[membership(fc)],
layout=layout.kamada.kawai)
它不提供根据成员资格专门分隔每组节点的布局。有谁知道可以提供这个的不同布局?所有这一切都是采用布局:kamada.kawai 并在成员中着色,而不是重构布局以便按成员组织。
希望这个问题是有道理的。谢谢!
您必须使用人工权重向量计算 Kamada-Kawai 布局,该权重向量将高权重分配给集群内的边,并将低权重分配给跨集群边界的边:
> graph <- grg.game(100, 0.2) # example graph
> cl <- fastgreedy.community(graph)
> weights <- ifelse(crossing(cl, graph), 1, 100)
> layout <- layout_with_kk(graph, weights=weights)
> plot(graph, layout=layout)
这里的技巧是 ifelse(crossing(cl, graph), 1, 100)
部分——crossing(cl, graph)
采用聚类和聚类所属的图,returns 一个布尔向量,它为每条边定义是否边缘是否跨越集群边界。然后 ifelse()
调用简单地用 1 替换此向量中的 TRUE
(即边交叉边界),用 0 替换 FALSE
(即边留在簇内)。