如何绘制图的分布聚类系数

时间:2020-10-22 15:21:41

标签: python matplotlib cluster-analysis networkx

我是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)

1 个答案:

答案 0 :(得分:0)

您可以根据群集为每个节点分配颜色。 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()

example plot