【问题标题】:visualize overlapping communities in graph by any of the python or R modules通过任何 python 或 R 模块可视化图形中的重叠社区
【发布时间】:2022-11-29 18:10:17
【问题描述】:

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

例如,关于节点、边缘和每个社区中的节点的信息如下给出。请注意,节点 G 跨越两个社区。

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 中所述。但是,就我而言,我想使用每个社区中包含的节点列表来定义社区。

【问题讨论】:

    标签: python r networkx visualization igraph


    【解决方案1】:

    以下是 Rigraph 的选项。


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

    g <- graph_from_data_frame(df, directed = FALSE)
    mbs <- membership(cluster_edge_betweenness(g))
    grp <- lapply(
      split(names(mbs), mbs),
      function(x) {
        c(
          x,
          names(which(colSums(distances(g, x) == 1) > 1))
        )
      }
    )
    plot(g, mark.groups = grp)
    

    数据

    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")
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多