Networkx 中 Louvain 分区的可视化

请帮助我更改可视化 Louvain 聚类算法的结果。我从网站 https://github.com/taynaud/python-louvain获取代码 我可以重写代码以便每个集群都有自己的形状(圆形、三角形、正方形……)吗?


import community as community_louvain

import matplotlib.cm as cm

import matplotlib.pyplot as plt

import networkx as nx


# load the karate club graph

G = nx.karate_club_graph()


# compute the best partition

partition = community_louvain.best_partition(G)


# 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_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()


慕标5832272
浏览 276回答 1
1回答

MM们

不幸的nx.draw_networkx_nodes是不接受可迭代的形状,因此您必须遍历节点并单独绘制它们。此外,我们必须索引生成的cmap,否则,单值社区值将映射到相同的初始 cmap 颜色。对于可能的形状,我只是复制文档中提到的可用形状的字符串,并根据分区号对其进行索引:# load the karate club graphG = nx.karate_club_graph()# compute the best partitionpartition = 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 graphpos = nx.spring_layout(G)# color the nodes according to their partitioncmap = cm.get_cmap('viridis', max(partition.values()) + 1)nx.draw_networkx_edges(G, pos, alpha=0.5)for node, color in partition.items():&nbsp; &nbsp; nx.draw_networkx_nodes(G, pos, [node], node_size=100,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;node_color=[cmap.colors[color]],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;node_shape=shapes[color])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python