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

使用NetworkX绘制社区结构存在问题,请求排查代码错误

代码错误分析与修正

错误点:

  • greedy是社区集合的列表,没有values()方法,直接调用会报错。你需要把每个节点映射到对应的社区编号,才能生成节点颜色列表。
  • plt.show(G)是错误的,plt.show()不需要传入图对象。

修正后的代码:

import networkx as nx
import matplotlib.pyplot as plt
import networkx.algorithms.community as nxcom

G = nx.karate_club_graph()
# 贪心算法划分社区
greedy_communities = nxcom.greedy_modularity_communities(G) 

# 构建节点到社区编号的映射
node_to_community = {}
for community_id, nodes in enumerate(greedy_communities):
    for node in nodes:
        node_to_community[node] = community_id

# 生成每个节点对应的社区编号(作为颜色值)
node_colors = [node_to_community[node] for node in G.nodes()]

pos = nx.spring_layout(G)  # 计算图布局
plt.axis('off')
# 绘制节点,用社区编号作为颜色依据
nx.draw_networkx_nodes(G, pos, cmap=plt.cm.RdYlBu, node_color=node_colors)
# 补充绘制边,让图更完整
nx.draw_networkx_edges(G, pos, alpha=0.3)
plt.show()

说明:

  1. 先通过enumerate给每个社区分配一个编号,再把每个节点映射到对应的编号。
  2. 用节点的社区编号作为node_color的参数,这样同一社区的节点会显示同色系的颜色。
  3. 加上边的绘制,让可视化效果更清晰,符合社区结构展示的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:25:21