You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扩展greedy_modularity_communities检测的社区列表并迭代绘制网络社区

社区检测批量绘制适配方案

你不需要手动定义单个community_x变量,直接对社区检测结果做遍历即可,同时适配任意数量的检测结果,以下是可直接运行的完整实现:

import networkx as nx
import matplotlib.pyplot as plt
from networkx.algorithms.community.modularity_max import greedy_modularity_communities

# 初始化图,可替换为自定义图
G = nx.karate_club_graph()
circ_pos = nx.circular_layout(G)

# 社区检测
communities = list(greedy_modularity_communities(G))
# 批量完成所有社区的排序,需访问第i个社区时取sorted_communities[i]即可
sorted_communities = [sorted(comm) for comm in communities]

# 调色板,社区数量多可替换为其他cmap如plt.cm.hsv
color_palette = plt.cm.tab10.colors

# 迭代绘制所有社区
for comm_idx, node_list in enumerate(sorted_communities):
    nx.draw_networkx_nodes(
        G, 
        circ_pos, 
        nodelist=node_list, 
        node_color=color_palette[comm_idx % len(color_palette)], 
        alpha=0.5
    )

# 可选补充绘制边和标签
nx.draw_networkx_edges(G, circ_pos, alpha=0.2)
nx.draw_networkx_labels(G, circ_pos, font_size=8)
plt.axis("off")
plt.show()

关键逻辑说明

  • 列表推导式批量处理所有社区排序,避免手动定义单个变量,完全适配任意数量的社区检测结果
  • 用enumerate遍历社区列表自动获取索引和对应节点列表,无需重复编写绘制代码
  • 取模运算%实现颜色循环,解决社区数量超过调色板颜色数的适配问题

内容的提问来源于stack exchange,提问作者LdM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:24:04