#-*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import networkx as nx #导入NetworkX包,为了少打几个字母,将其重命名为nx
import random
import sys
G = nx.Graph() #建立一个空的无向图G
'''
G.add_node(1) #添加一个节点1
G.add_edge(2,3) #添加一条边2-3(隐含着添加了两个节点2、3)
G.add_edge(3,2) #对于无向图,边3-2与边2-3被认为是一条边
'''
maxsub=4
layer=4
rootdict={}
rootdict[0]='1'
G.add_node('1')
for i in range(1,layer):
rootdict[i]=[]
for j in rootdict[i-1]:
tmprandom = random.randint(2, maxsub)
print j,' tmprandom:',tmprandom
for k in range(1,tmprandom+1):
rootdict[i].append(str(j)+str(k))
G.add_node(str(j)+str(k))
G.add_edge(str(j),str(j)+str(k),weight=layer-i+1)
print rootdict[i]
#sys.exit(0)
#G = nx.random_graphs.random_regular_graph(3, 10)
print G.nodes() #输出全部的节点: [1, 2, 3]
print G.edges() #输出全部的边:[(2, 3)]
print G.number_of_edges() #输出边的数量:1
pos = nx.fruchterman_reingold_layout(G)
#nx.draw_networkx_labels(G,pos,font_size=40)
#print pos
nx.draw_networkx(G, pos, with_labels = True, node_size = 160, font_size=30, node_color='g',alpha=0.25)
# nodes
nx.draw_networkx_nodes(G,pos,node_size=160, node_color='g',alpha=0.25)
#根据权重,实线为权值大的边,虚线为权值小的边
# edges
#elarge=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] >2]
#esmall=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] <=2]
#print esmall
edges_list=[]
for i in range(1,layer):
tmplist = [(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] <=layer+1-i and d['weight'] >layer-i]
edges_list.append(tmplist)
for i in range(0,layer-1):
print edges_list[i]
nx.draw_networkx_edges(G,pos,edgelist=edges_list[i], width=(layer-i-1)*3,edge_color='r')
#nx.draw_networkx_edges(G,pos,edgelist=elarge, width=3,edge_color='r')
#nx.draw_networkx_edges(G,pos,edgelist=esmall, width=1,edge_color='r')
# labels标签定义
nx.draw_networkx_labels(G,pos,font_size=30)
#nx.draw_networkx(G, pos, with_labels = True, node_size = 20)
#nx.draw(G, pos, with_labels = False, node_size = 40)
path=nx.all_pairs_shortest_path(G) #调用多源最短路径算法,计算图G所有节点间的最短路径
#print path[1][6] #输出节点0、2之间的最短路径序列: [0, 1, 2]
#print path[][]
plt.show()
利用NetworkX库进行图论绘图
猜你喜欢
转载自blog.csdn.net/b0207191/article/details/91373187
今日推荐
周排行