【Python】networkx图节点和与边操作(4)

graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里。下面将比较graph操作前后的不同。

目录

1、移除某些节点和边

2、合并graph

3、有向图和无向图的转化

这个博主讲的真的很不错,很适合入门~


1、移除某些节点和边

#G.clear()
#生成graph
G=nx.path_graph(8)

plt.subplots(1,2,figsize=(15,5))
plt.suptitle('移除部分节点和边',fontproperties=myfont)

#画出未操作前的graph
plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
plt.title('操作前',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

#移除部分节点和边,移除所有的点和边使用G.clear(),不再单独测试
G.remove_node(2)
G.remove_nodes_from([1,5])
G.remove_edge(3, 4)

#画出操作后的graph
plt.subplot(122)
nx.draw(G, with_labels=True, font_weight='bold')
plt.title('操作后',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

#显示graph
plt.show()

2、合并graph

# G1.clear()
# G2.clear()
# G3.clear()

plt.subplots(1,3,figsize=(15,5))
plt.suptitle('合并两个图',fontproperties=myfont)

#生成graph1
G1=nx.path_graph(8)
plt.subplot(131)
nx.draw(G1, with_labels=True, font_weight='bold')
plt.title('图1',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

#生成graph2
G2=nx.complete_graph(3)
plt.subplot(132)
nx.draw(G2, with_labels=True, font_weight='bold')
plt.title('图2',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

#移除部分节点和边,移除所有的点和边使用G.clear(),不再单独测试
G3=nx.disjoint_union(G1,G2)
plt.subplot(133)
nx.draw(G3, with_labels=True, font_weight='bold')
plt.title('合并后',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

#显示graph
plt.show()

3、有向图和无向图的转化

#无向图转有向图
plt.subplots(1,2,figsize=(15,3))
plt.suptitle('无向图转换为有向图',fontproperties=myfont)

#定义无向图
G = nx.path_graph(8)
#转换为有向图
G2=G.to_directed()

#下面是可视化转换前后的两个图
plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
plt.title('无向图',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

plt.subplot(122)
nx.draw(G2, with_labels=True, font_weight='bold')
plt.title('有向图',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])
plt.show()
plt.close()

#有向图转无向图
G.clear()
G2.clear()
plt.subplots(1,2,figsize=(15,3))
plt.suptitle('有向图转换为无向图',fontproperties=myfont)

#定义有向图
G = nx.path_graph(8,create_using=nx.DiGraph())
#转换为无向图
G2=G.to_undirected()

#下面是可视化转换前后的两个图
plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
plt.title('有向图',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])

plt.subplot(122)
nx.draw(G2, with_labels=True, font_weight='bold')
plt.title('无向图',fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])
plt.show()

# 注:可以看出无向图转有向图时,得到的边都是双向

 

参考:

NetworkX系列教程(6)-对graph进行操作

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值