python networkx模块_networkx模块

本文通过实例代码详细介绍了Python的NetworkX模块,包括无向图、有向图的创建与转换,加权图的处理,以及图的最短路径计算。此外,还涉及了小世界网络、ER随机图、规则图、无标度网络的生成,并探讨了网络的特征如度分布、中心性等。
摘要由CSDN通过智能技术生成

# # -*- coding: utf-8 -*-## #01-模块导入# # import networkx as nx# # import matplotlib.pyplot as plt### # #02-无向图graph# # G=nx.Graph()# # G.add_node(1)# # G.add_edge(2,3)# # G.add_edge(3,2)# # print "nodes:", G.nodes()# # print "edges:", G.edges()# # print "number of edges:", G.number_of_edges()# # nx.draw(G,pos=None,with_labels=True)# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\wuxiangtu.png')# # plt.show()## #03-有向图digraph# # G=nx.DiGraph()# # G.add_node(1)# # G.add_node(2)# # G.add_nodes_from([3,4,5,6])# # G.add_cycle([1,2,3,4])# # G.add_edge(1,3)# # G.add_edges_from([(3,5),(3,6),(6,7)])# # nx.draw(G,pos=None,with_labels=True)# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\youxiangtu.png')# # plt.show()## #04-有向图转换为无向图# # G1=G.to_undirected()# # plt.subplot(1,2,1)# # nx.draw(G,pos=None,with_labels=True)# # plt.subplot(1,2,2)# # nx.draw(G1,pos=None,with_labels=True)# # plt.show()## # G1=G.to_undirected()# # plt.figure(1)# # nx.draw(G,pos=None,with_labels=True)# # plt.figure(2)# # nx.draw(G1,pos=None,with_labels=True)# # plt.show()### # # #05-加权图# # G=nx.Graph()# # G.add_edge(2,3)# # G.add_weighted_edges_from([(3,4,1.0),(3,5,10.5)])# # print G.get_edge_data(2,3)# # print G.get_edge_data(3,4)# # print G.get_edge_data(3,5)# # nx.draw(G,pos=None,with_labels=True)# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\wuxiangjiaquan.png')# # plt.show()## # #06- 求无向图的任意两点间的最短路径# # G = nx.Graph()# # G.add_edges_from([(1,2),(1,3),(1,4),(1,5),(4,5),(4,6),(5,6)])# # path = nx.all_pairs_shortest_path(G)# # print path[1]## #07-图中指定两点之间的最短路径# # G=nx.Graph()# # G.add_nodes_from([1,2,3,4,5,6,7])# # G.add_edges_from([(1,2),(1,3),(2,3),(3,4),(3,6),(4,6),(2,5),(1,7)])# # nx.draw(G,pos=None,with_labels=True)# # plt.show()# # try:# # n=nx.shortest_path_length(G,1,4)# # print n# # except nx.NetworkXNoPath:# # print 'No path'## # #08-生成小世界网络# # 用random_graphs.watts_strogatz_graph(n, k, p)# # 方法生成一个含有n个节点、每个节点有k个邻居、以概率p随机化重连边的WS小世界网络# # WS = nx.random_graphs.watts_strogatz_graph(20,4,0.3) #生成包含20个节点、每个节点4个近邻、随机化重连概率为0.3的小世界网络# # pos = nx.circular_layout(WS) #定义一个布局,此处采用了circular布局方式# # nx.draw(WS,pos,with_labels=True,node_size = 30) #绘制图形# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\random_graphs.png')# # plt.show()## # # 09-生成ER随即图# # 模型的基本思想是以概率p连接N个节点中的每一对节点。# # 用random_graphs.erdos_renyi_graph(n,p)方法生成一个含有n个节点、以概率p连接的ER随机图# # ER = nx.random_graphs.erdos_renyi_graph(20,0.2) #生成包含20个节点、以概率0.2连接的随机图# # pos = nx.shell_layout(ER) #定义一个布局,此处采用了shell布局方式# # nx.draw(ER,pos,with_labels=True,node_size = 30)# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\er_random_graphs.png')# # plt.show()## # 10-规则图regular graph# # random_graphs.random_regular_graph(d, n)方法# # 可以生成一个含有n个节点,每个节点有d个邻居节点的规则图# # RG = nx.random_graphs.random_regular_graph(3,20) #生成包含20个节点、每个节点有3个邻居的规则图RG# # pos = nx.spectral_layout(RG) #定义一个布局,此处采用了spectral布局方式,后变还会介绍其它布局方式,注意图形上的区别# # nx.draw(RG,pos,with_labels=True,node_size = 200) #绘制规则图的图形,with_labels决定节点是非带标签(编号),node_size是节点的直径# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\regular_graphs.png')# # plt.show() #显示图形## # #11-BA无标度网络# # # 用random_graphs.barabasi_albert_graph(n, m)方法# # # 生成一个含有n个节点、每次加入m条边的BA无标度网络。# import networkx as nx# import matplotlib.pyplot as plt# BA=nx.random_graphs.barabasi_albert_graph(10,1)# nx.draw(BA,pos=None,with_labels=True)# plt.show()# # 12-用nx.path_graph()画简单网络# # G=nx.path_graph(8)# # nx.draw(G,pos=None,with_labels=True)# # plt.show()## # # 13-Draw a graph with matplotlib, color by degree# # # G = nx.cycle_graph(24)# # G=nx.Graph()# # G.add_node(1)# # G.add_edge(2,3)# # G.add_edge(3,1)# # pos = nx.spring_layout(G, iterations=200)# # nx.draw(G, pos, node_color=range(3), node_size=800, cmap=plt.cm.Blues)# # plt.show()## # 14-Draw a graph with matplotlib, color edges# # import matplotlib.pyplot as plt# # import networkx as nx# ## # G = nx.star_graph(20)# # pos = nx.spring_layout(G)# # colors = range(20)# # nx.draw(G, pos, node_color='#A0CBE2', edge_color=colors,# # width=4, edge_cmap=plt.cm.Blues, with_labels=False)# # plt.show()## #15-网络的整体特征# import networkx as nx# import matplotlib.pyplot as plt# G=nx.random_graphs.barabasi_albert_graph(10,3)#生成一个10个节点的BA无标度网络# plt.figure(1)# nx.draw(G,pos=None,with_labels=True)# plt.show()# # 网络平均聚集系数calculate average Clustering coefficient# print 'average clustering coefficient is ', nx.average_clustering(G)# # 每个节点的聚集系数# print "every node's clustering coefficient is ", nx.clustering(G)# # 网络直径calucate Diameter of G (the length of the longest shortest path)# print 'Diameter of G is ', nx.diameter(G)# # 网络平均最短路径calculate all nodes' average shortest path length# print "all nodes' average shortest path length is", nx.average_shortest_path_length(G)# 16-网络中节点的度及度分布importnetworkx asnx

importmatplotlib.pyplot asplt

G=nx.random_graphs.barabasi_albert_graph(10,3)#生成一个10个节点的BA无标度网络plt.figure(1)

nx.draw(G,pos=None,with_labels=True)

plt.show()

# print G.degree()#给出所有节点的度值# print G.degree(0)#给出node-0的度值# degree=nx.degree_histogram(G)# print nx.degree_histogram(G)#返回图中所有节点的度分布序列(从1至最大度的出现频次)# x=range(len(degree))# y=[z/float(sum(degree)) for z in degree]#度分布频率# plt.figure(2)# plt.loglog(x,y,color='blue',linewidth=2)# plt.show()# #接近中心性# closeness_centrality=nx.closeness_centrality(G)# print closeness_centrality# #介数中心性# betweenness_centrality= nx.betweenness_centrality(G)# print betweenness_centrality#特征向量中心性eigenvector_centrality=nx.eigenvector_centrality(G)

printeigenvector_centrality

# # 17-有向网络的度值# import networkx as nx# import matplotlib.pyplot as plt## G=nx.DiGraph()# G.add_node(1)# G.add_node(2)# G.add_nodes_from([3,4,5,6])# G.add_cycle([1,2,3,4])# G.add_edge(1,3)# G.add_edges_from([(3,5),(3,6),(6,7)])# nx.draw(G,pos=None,with_labels=True)# # plt.savefig('E:\\06-python\\lcj_networkx_exercise\\results\\youxiangtu.png')# plt.show()# print nx.degree_centrality(G) #Compute the degree centrality for nodes.# print nx.in_degree_centrality(G) # Compute the in-degree centrality for nodes.# print nx.out_degree_centrality(G) # Compute the out-degree centrality for nodes.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值