python - 如何绘制图形聚类系数的分布
问题描述
我是 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)
解决方案
您可以根据集群为每个节点分配颜色。Matplotlibplt.get_cmap()
可以指示一系列颜色。anorm
告诉我们如何将聚类值映射到该颜色范围。可选地,可以添加一个颜色条来显示对应关系。
为了简单地显示分布,可以使用聚类值绘制直方图。
下面的示例使用稍微调整的参数来创建图形。
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()
推荐阅读
- python - 如何将我的腌制 ML 模型从 GCS 加载到 Dataflow/Apache Beam
- rabbitmq - 在 debian 中的 rabbitmq 上添加用户显示 /usr/lib/rabbitmq/bin/rabbitmqctl: dirname: not found
- scala - 为什么不在主线程上执行分叉子任务?
- css - 调整屏幕大小时,在滑块动画期间,Bootstrap 4 carousel 最后一个图像宽度保持比滑块宽度宽(不裁剪为滑块宽度)
- node.js - 我有嵌套的 json 数据,我想从下面的 json 中找到名称值,结果只返回名称和路由。#节点
- c - 将 char 字符串分配给 uint32_t(仅限 c,而非 c++)
- python - 将 C 库与 Cython 一起使用时出现错误
- spring - Spring Data:如何像从队列中轮询一样从表中进行选择
- sql - 如何在 SQL Server 中进行排列组合?
- python - 获取 TypeError: unhashable type: 'dict_keys' in jupyter notebook