python networkx中的图形模块化

蛇纹

我已经在python lib NetorwkX中创建了一个图,并且我想实现一个模块化算法,以便对图的节点进行聚类。我遇到以下代码:

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

G = nx.Graph()

G = nx.read_weighted_edgelist('graphs/fashionGraph_1.edgelist')
nx.transitivity(G)

# Find modularity
part = community.best_partition(G)
mod = community.modularity(part,G)

# Plot, color nodes using community structure
values = [part.get(node) for node in G.nodes()]
nx.draw_spring(G, cmap=plt.get_cmap('jet'), node_color = values, node_size=30, with_labels=False)
plt.show()

我的图有4267和3692边。结果图是这样的:

在此处输入图片说明

我对图的节点如何集群有些困惑。颜色到底有哪些逻辑?

乔尔

文档中

节点颜色。可以是单个颜色格式字符串,也可以是长度与节点列表相同的颜色序列。如果指定了数值,则将使用cmap和vmin,vmax参数将它们映射为颜色。有关更多详细信息,请参见matplotlib.scatter。

part = community.best_partition(G)为每个节点分配一个社区-part是字典,并且part[node]是节点所属的社区(每个节点都被分配一个整数)。随后values = [part.get(node) for node in G.nodes()],按照节点出现的顺序创建一个列表,其中包含每个节点的社区编号G.nodes()

然后在plotting命令中,它将使用这些社区编号来确定节点的颜色。已分配给同一社区的所有节点将获得相同的颜色。

节点的物理位置由弹簧布局分配。您可以看到,弹簧布局似乎将节点放置在一些位置,这些位置暗示了一些与community.best_partition发现的社区不同的社区这也许有点令人惊讶,但是肯定没有什么可以阻止它。它确实使我认为您使用的算法不能适当考虑网络中的所有结构。文件best_partition给出了基本算法的一些解释。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章