如何解决如何绘制图的分布聚类系数
我是networkx和pyplot的新手,我只是想知道如何绘制局部聚类系数的分布。由于degree_histogram函数可以为您绘制度分布,因此绘制度分布更为简单,但是我不确定该怎么做。
g = nx.erdos_renyi_graph(1000,0.02,seed = None,directed = False)
gc = g.subgraph(max(nx.connected_components(g)))
lcc = nx.clustering(gc)
解决方法
您可以根据群集为每个节点分配颜色。 Matplotlib的plt.get_cmap()
可以指示颜色范围。 norm
告诉聚类值将如何映射到该颜色范围。 (可选)可以添加颜色条以显示对应关系。
仅显示分布,可以使用聚类的值绘制histogram。
下面的示例使用略微修改的参数来创建图形。
import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable
import networkx as nx
g = nx.erdos_renyi_graph(50,0.1,seed=None,directed=False)
gc = g.subgraph(max(nx.connected_components(g)))
lcc = nx.clustering(gc)
cmap = plt.get_cmap('autumn')
norm = plt.Normalize(0,max(lcc.values()))
node_colors = [cmap(norm(lcc[node])) for node in gc.nodes]
fig,(ax1,ax2) = plt.subplots(ncols=2,figsize=(12,4))
nx.draw_spring(gc,node_color=node_colors,with_labels=True,ax=ax1)
fig.colorbar(ScalarMappable(cmap=cmap,norm=norm),label='Clustering',shrink=0.95,ax=ax1)
ax2.hist(lcc.values(),bins=10)
ax2.set_xlabel('Clustering')
ax2.set_ylabel('Frequency')
plt.tight_layout()
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。