为了账号安全,请及时绑定邮箱和手机立即绑定

Networkx 中 Louvain 分区的可视化

Networkx 中 Louvain 分区的可视化

慕标5832272 2023-03-08 16:04:29
请帮助我更改可视化 Louvain 聚类算法的结果。我从网站 https://github.com/taynaud/python-louvain获取代码 我可以重写代码以便每个集群都有自己的形状(圆形、三角形、正方形……)吗?import community as community_louvainimport matplotlib.cm as cmimport matplotlib.pyplot as pltimport networkx as nx# load the karate club graphG = nx.karate_club_graph()# compute the best partitionpartition = community_louvain.best_partition(G)# draw the graphpos = nx.spring_layout(G)# color the nodes according to their partitioncmap = cm.get_cmap('viridis', max(partition.values()) + 1)nx.draw_networkx_nodes(G, pos, partition.keys(), node_size=40,                       cmap=cmap, node_color=list(partition.values()))nx.draw_networkx_edges(G, pos, alpha=0.5)plt.show()
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

不幸的nx.draw_networkx_nodes是不接受可迭代的形状,因此您必须遍历节点并单独绘制它们。此外,我们必须索引生成的cmap,否则,单值社区值将映射到相同的初始 cmap 颜色。对于可能的形状,我只是复制文档中提到的可用形状的字符串,并根据分区号对其进行索引:

# load the karate club graph

G = nx.karate_club_graph()


# compute the best partition

partition = community_louvain.best_partition(G)


cmap = cm.get_cmap('viridis', max(partition.values()) + 1)

shapes = 'so^>v<dph8'


plt.figure(figsize=(12,8))

# draw the graph

pos = nx.spring_layout(G)

# color the nodes according to their partition

cmap = cm.get_cmap('viridis', max(partition.values()) + 1)

nx.draw_networkx_edges(G, pos, alpha=0.5)

for node, color in partition.items():

    nx.draw_networkx_nodes(G, pos, [node], node_size=100,

                           node_color=[cmap.colors[color]],

                           node_shape=shapes[color])

//img1.sycdn.imooc.com//640841cb0001fe6d06720441.jpg

查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信