本文共 2341 字,大约阅读时间需要 7 分钟。
原文地址:https://my.oschina.net/sanpeterguo/blog/195390
环境:win7(AMD32bit) + python2.6 + network1.8.1
依赖:
numpy https://pypi.python.org/packages/2.6/n/numpy/numpy-1.6.1.win32-py2.6.exe#md5=67e0c10cf55b713bd27cbba94dee9673
pyparsing http://ncu.dl.sourceforge.net/project/pyparsing/pyparsing/pyparsing-2.0.1/pyparsing-2.0.1.win32-py2.6.exe
datautil https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.2.tar.gz#md5=c1f654d0ff7e33999380a8ba9783fd5c
matplotlib http://ncu.dl.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.3.1/matplotlib-1.3.1.win32-py2.6.exe
networkx https://pypi.python.org/packages/source/n/networkx/networkx-1.8.1.zip#md5=4a90328898d9db29bbb12ef3e6223bab
six https://pypi.python.org/packages/source/s/six/six-1.5.2.tar.gz#md5=322b86d0c50a7d165c05600154cecc0a
安装:bulabula...
源码:
有向图
#-*- coding:utf8-*-import networkx as nximport matplotlib.pyplot as pltG = 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)plt.savefig("youxiangtu.png")plt.show()
8节点完全图
import networkx as nximport matplotlib.pyplot as pltG = nx.complete_graph(8)nx.draw(G)plt.savefig("8nodes.png")plt.show()
无向图
#-*- coding:utf8-*-import networkx as nximport matplotlib.pyplot as pltG = nx.Graph()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)plt.savefig("wuxiangtu.png")plt.show()
颜色节点图
import networkx as nximport matplotlib.pyplot as pltG = nx.Graph()G.add_edges_from([(1,2),(1,3),(1,4),(1,5),(4,5),(4,6),(5,6)])pos = nx.spring_layout(G)colors = [1,2,2,2,3,1]nx.draw_networkx_nodes(G,pos,node_color=colors)nx.draw_networkx_edges(G,pos)plt.axis('off')plt.savefig("color_nodes.png")plt.show()
效果:
计算:
import networkx as nximport matplotlib.pyplot as plt#计算1:求无向图的任意两点间的最短路径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]#计算2:求出图中在环上的点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]
输出:
{1: [1], 2: [1, 2], 3: [1, 3], 4: [1, 4], 5: [1, 5], 6: [1, 4, 6]}
{1: [1], 2: [1, 2], 3: [1, 3], 4: [1, 4], 5: [1, 5], 6: [1, 4, 6]}
参考:
不错的帖子:http://blog.sina.com.cn/s/blog_720448d301018px7.html
转载地址:http://ymxgi.baihongyu.com/