文档章节

使用networkx-python绘制点边图

彼得
 彼得
发布于 2014/01/23 21:14
字数 362
阅读 11338
收藏 10

环境:win7(AMD32bit) + python2.6 + network1.8.1

依赖:

  1. numpy https://pypi.python.org/packages/2.6/n/numpy/numpy-1.6.1.win32-py2.6.exe#md5=67e0c10cf55b713bd27cbba94dee9673

  2. pyparsing http://ncu.dl.sourceforge.net/project/pyparsing/pyparsing/pyparsing-2.0.1/pyparsing-2.0.1.win32-py2.6.exe

  3. datautil https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.2.tar.gz#md5=c1f654d0ff7e33999380a8ba9783fd5c

  4. matplotlib http://ncu.dl.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.3.1/matplotlib-1.3.1.win32-py2.6.exe

  5. networkx https://pypi.python.org/packages/source/n/networkx/networkx-1.8.1.zip#md5=4a90328898d9db29bbb12ef3e6223bab

  6. 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


© 著作权归作者所有

共有 人打赏支持
彼得

彼得

粉丝 39
博文 122
码字总数 38726
作品 0
深圳
程序员
Pandas/networkx图分析简单入门

对于图论而言,大家或多或少有些了解,数学专业或计算机相关专业的读者可能对其更加清楚。图论中的图像是由若干给定的点及连接两点的线所构成的图形,这样的图像通常用来描述某些事物之间的某...

【方向】
08/12
0
0
Hyperopt调参时: 'generator' object is not subs

原因与解决方案 思考 : pip 装的时候就有警告 , 所以最先考虑的是类库问题,但是是在找不到是那个类库的问题,查了Hyperopt源码也没什么用.大概僵持了二十分钟,决定还是去Github查查issues.确...

寒月谷
08/24
0
0
他学习一年Python找不到工作,大佬都说你别再学Python了!

都说,滴水穿石非一日之功。然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月。其中缘由,有些人看了大半辈子还没看明白。 即使Python这么火,为何你学习一年的P...

柯西带你学编程
06/06
0
0
快速,准确的中文文本摘要实现方法

以前发布过一个Yaha库 ,里面有三种不同的摘要实现方法。它们都是基于关键字提取的,缺点很明显(测试地址): 基于关键字的摘要不够准确,会提供到不少关键字份量很大同时很垃圾的句子 基于...

余争
2013/12/16
0
5
【python数据挖掘课程】二十三.时间序列金融数据预测及Pandas库详解

这是《Python数据挖掘课程》系列文章,也是我上课内容及书籍中的一个案例。本文主要讲述时间序列算法原理,Pandas扩展包基本用法以及Python调用statsmodels库的时间序列算法。由于作者数学比...

eastmount
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL面试题集锦

什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正...

老道士
18分钟前
0
0
使用 LogStash 归集日志

elastic 官网: https://www.elastic.co/ 为了便于集中查看多台主机的业务日志,使用 Filebeat, Redis, Logstash的方式进行收集: (1) Filebeat 监控日志文件的变化, 将新增部分写入redis中, 每...

ouhoo
22分钟前
0
0
java序列化(六) - protostuff序列化

添加依赖 <dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.5.9</version> </de......

晨猫
28分钟前
0
0
Ceph学习笔记1-Mimic版本多节点部署

特别说明: 本方法也可以用于单节点部署,只部署一个Monitor(只是会形成单点故障而已),最低要求是使用两个分区创建2个OSD(因为默认最小副本是2);如果不需要使用CephFS,则可以不部署M...

LastRitter
31分钟前
0
0
923. 3Sum With Multiplicity - LeetCode

Question 923. 3Sum With Multiplicity Solution 题目大意: 给一个int数组A和一个目标值target,求满足下面两个条件的组合个数,其中i,j,k分别为数组的索引 i<j<k target = A[i] + A[j] + A[k...

yysue
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部