graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里。下面将比较graph操作前后的不同。
目录
1、移除某些节点和边
2、合并graph
3、有向图和无向图的转化
这个博主讲的真的很不错,很适合入门~
#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()
# 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()
#无向图转有向图
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进行操作