python networkx 求图中的环_使用networkx-python绘制点边图

环境: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 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)

plt.savefig("youxiangtu.png")

plt.show()

8节点完全图

import networkx as nx

import matplotlib.pyplot as plt

G = nx.complete_graph(8)

nx.draw(G)

plt.savefig("8nodes.png")

plt.show()

无向图

#-*- coding:utf8-*-

import networkx as nx

import matplotlib.pyplot as plt

G = 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 nx

import matplotlib.pyplot as plt

G = 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 nx

import 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]}

参考:Python图论工具库networkX简介

不错的帖子:http://blog.sina.com.cn/s/blog_720448d301018px7.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值