python - Networkx:图中节点的标签
问题描述
我有一个networkx g,分为一些社区,存储在字典中,其形式如下:
partition={465: 0, 928: 4, 113: 2, 333: 0, 679: 3, 1141: 4, 503: 0, 1017: 4, 1214: 3, 800: 1, 266: 5, 1052: 4, 27: 2, 580: 3, 948: 1, 1102: 4, 270: 5, 657: 3, 546: 3, 1087: 4, 589: 3, 1172: 4, 881: 1, 924: 2, 433: 3, 403: 0, 592: 3, 579: 3, 260: 5, 666: 3, 972: 4, 753: 0, 626: 3, 1013: 4, 891: 1, 210: 5, 109: 2, 1029: 4, 506: 3, 435: 3, 277: 5, 1198: 0, 492: 0, 688: 3, 377: 5}
我正在尝试绘制网络,突出不同的社区。代码是:
pos = nx.spring_layout(g) # graph layout
plt.figure(figsize=(8, 8)) # 8 x 8 inches
plt.axis('off')
nx.draw_networkx_nodes(g, pos, node_size=25, node_color=list(partition.values()))
nx.draw_networkx_edges(g, pos, alpha=0.05)
我得到以下1。我如何知道哪个社区(标记为 0 到 5)以黄色绘制,哪个以蓝色绘制等等(无需在绘图上显示标签)?
解决方案
你可以用节点颜色图中的颜色制作一个虚拟图
# dummy data
g = nx.from_numpy_matrix(np.random.randint(0,2,size=(100,100)))
partition = {a:np.random.randint(0,6) for a in g.nodes()}
pos = nx.spring_layout(g) # graph layout
plt.figure(figsize=(8, 8)) # 8 x 8 inches
plt.axis('off')
## assign the output of nx.draw_networkx_nodes to a variable to call its colormap
nodes = nx.draw_networkx_nodes(g, pos, node_size=25, node_color=list(partition.values()))
nx.draw_networkx_edges(g, pos, alpha=0.05)
values = sorted(list(set(partition.values())))
for v in values:
# make dummy scatterplot to generate labels
plt.gca().scatter([],[], color=nodes.cmap(v/np.max(values)), label=v)
plt.legend(loc='lower right')
推荐阅读
- android - 应用程序处于活动状态或关闭时不显示通知
- java - 如何向现有的 Apache Ignite 实例添加新主机?
- javascript - 未捕获的类型错误:无法读取属性“插入”
- mysql - 按日期过滤sql
- php - 在另一列中查找重复值时如何将列数据存储为逗号分隔值?
- ios - 如何在不影响滚动的情况下将项目添加到 tableView 模型数组
- c# - 转换xml字符串不同的对象
- python-2.7 - 使用 Python 请求上传大于 12k 的文件在 Ubuntu 上不起作用
- docker - docker run 和 docker 容器运行的区别
- android - 单击 textInput 时 React Native 致命崩溃