首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可视化图中任意python或R模块中的重叠社区

可视化图中任意python或R模块中的重叠社区
EN

Stack Overflow用户
提问于 2022-11-29 06:13:28
回答 1查看 61关注 0票数 2

如果图中有重叠的社区,我如何可视化社区?我可以使用python中的任何模块(networkx、in、matplotlib等)。或R.

例如,每个社区的节点、边缘和节点的信息如下所示。注意,节点G跨越两个社区。

代码语言:javascript
复制
list_nodes = ['A', 'B', 'C', 'D','E','F','G','H','I','J']
tuple_edges = [('A','B'),('A','C'),('A','D'),('B','C'),('B','D'), ('C','D'),('C','E'),
              ('E','F'),('E','G'),('F','G'),('G','H'),
              ('G','I'), ('G','J'),('H','I'),('H','J'),('I','J'),]
list_communities = [['A', 'B', 'C', 'D'],['E','F','G'],['G', 'H','I','J']]

我想要一个图形化的社区,如下图所示。

在networkx中,可以对每个节点(如this post )进行彩色编码,但当社区重叠时,这种方法并不适合。

在igraph中,可以使用包中包含的社区提取方法来可视化社区,如this post中所描述的那样。但是,在我的例子中,我希望使用每个社区中包含的节点列表来定义社区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-29 09:42:56

下面是igraphR中的一个选项。

我认为您可能需要手动注释社区信息(见下面的grp ),然后在绘图时使用它,例如,

代码语言:javascript
复制
g <- graph_from_data_frame(df, directed = FALSE)
grp <- lapply(
  groups(cluster_edge_betweenness(g)),
  function(x) {
    c(
      x,
      names(which(colSums(distances(g, x) == 1) > 1))
    )
  }
)
plot(g, mark.groups = grp)

或者使用最小大小的max_cliques 3 (感谢@clp的评论)

代码语言:javascript
复制
g <- graph_from_data_frame(df, directed = FALSE)
grp <- max_cliques(g, min = 3)
plot(g, mark.groups = grp)

数据

代码语言:javascript
复制
df <- data.frame(
  from = c("A", "A", "A", "B", "B", "C", "C", "E", "E", "F", "G", "G", "G", "H", "H", "I"),
  to = c("B", "C", "D", "C", "D", "D", "E", "F", "G", "G", "H", "I", "J", "I", "J", "J")
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74609794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档