python networkx教程_python – 如何使用networkx绘制子图

这篇教程解释了在使用Python的networkx库时,如何正确地创建和绘制子图。文中指出,当创建子图时,应提供节点名称列表,而不是包含额外数据的列表。通过修改代码,展示了如何绘制包含不在原始图G中的节点的子图,并使用相同的布局位置进行多次绘制。同时,对比了G.nodes()和G.nodes(data=True)的区别,后者会返回包含节点数据的元组列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您遇到的问题是您的子图命令告诉它创建一个带有nodelist的子图,其中每个元素不仅仅是节点名,还有关于该节点名的数据.命令G.subgraph只需要节点名称列表.

解决这个问题的最简单方法就是

k = G.subgraph(res)

即使res中的某些节点不在G中,它也能工作.

我将做这个改变,并通过在绘图中添加一个额外的子图来展示如何使用一致的位置绘制几次.它将绘制您的k,然后绘制由不在k中的所有节点组成的子图.请注意,由于子图的工作方式,两者之间不存在任何边.

import networkx as nx

from matplotlib import pylab as pl

G = nx.karate_club_graph()

res = [0,1,2,3,4,5, 'parrot'] #I've added 'parrot', a node that's not in G

#just to demonstrate that G.subgraph is okay

#with nodes not in G.

pos = nx.spring_layout(G) #setting the positions with respect to G, not k.

k = G.subgraph(res)

pl.figure()

nx.draw_networkx(k, pos=pos)

othersubgraph = G.subgraph(range(6,G.order()))

nx.draw_networkx(othersubgraph, pos=pos, node_color = 'b')

pl.show()

在G.nodes()调用中具有data = True的效果如下:

print G.nodes()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值