无向图,有向图,加权图等例子代码 【http://www.cnblogs.com/kaituorensheng/p/5423131.html#_label1
数据分析学习笔记(三)-NetworkX的使用 【http://baiyejianxin.iteye.com/blog/1764048
官网文档 【https://networkx.readthedocs.io/en/stable/overview.html】 【http://networkx.github.io/documentation/networkx-1.7/index.html
NetworkX使用笔记:读入外部文件并转换成各种格式 【http://sparkandshine.net/networkx-use-notes-read-external-file-convert-to-other-formats/
————————————————————————————————-

1.安装

安装networkx之前要安装画图工具matplotlib,以及矩阵运算工具numpy,于是我们执行:
pip install numpy
pip install matplotlib
pip install networkx

2.使用

networkx的英文版说明可以在其官方网站上下载得到,写的简单易懂。
http://networkx.github.io/documentation/latest/reference/index.html
这里记录下一些简单的建图方法。
在networkx中,图以对象的形式提供借口。
在图对象中,还有点,边等也是以对象形式提供,画图则调用matplotlib的函数完成。

建图

networkx可以建立简单无向图graph,有向图digraph,可重复边的multi-graph。

import networkx as nx
G=nx.Graph()
D=nx.DiGraph()
M=nx.MultiGraph()

这里的点可以是任意可区分的对象(hashable),比如数字,字符串,对象等。

G.add_node(1)
G.add_node('first_node’) #这里用一个对象多为key来唯一区别一个点 #我们还能够用一个列表来批量加入点
G.add_nodes_from([1,2,3]) #还可以用一个图对象作为点,嵌入到其他图中
G.add_node(D) #这里D作为一个点的key #或者把一个图的所有点赋予另一个图
G.add_nodes_from(D) #这里返回D的所有点,赋予G #与加入相同的传递方法,我们也可以删除点
G.remove_node(1)
G.remove_nodes_from([1,2,3])

这里的边可以使用两个单独的对象作为输入

G.add_edge(1,2) #表示1,2之间有一条边。 #如果不存在点1,2,则会自动加入点集合。 #或者以元组的形式作为输入
e=(1,2)
G.add_edge(e) #这里的代表吧元组解包(unpack),当作一个个的值扔到函数中去。 #如果不解包,等价于 #G.add_edge(e)=G.add_edge((1,2))与参数传递的方式不符。 #类似的,我们还可以使用包含元组的列表来传递参数
G.add_edges_from([(1,2),(2,3)]) #我们还可以报一个图的边赋予另一个图
G.add_edges_from(H) #删除
G.remove_edge(1,2)
G.remove_edges_from([(1,2),(2,3)])

访问

node_list = G.nodes()
edge_list = G.edges() #可以返回包含点与边的列表
node = G.node[‘first_node’] #如上根据key返回点
edge = G.edge['first_node’]['second_node’] #同样的方法,返回两个key之间的边

属性

我们可以给图,点,边赋予各种属性,最简单的就是权值属性

G.add_node(1,time='5pm’) #在添加时跟上属性
G.add_nodes_from([1,2,3],time='5pm’) #批量添加点是,跟上统一的属性
G.add_nodes_from([(3,{'time’:'5pm’}), (4,{'time’:'4pm’})]) #或者写成元组列表[(key,dict),(key,dict)]的形式
G.node1['time’] #根据字典key访问属性值。

给边添加属性也类似

G.add_edge(1,2,time='3am’)
G.add_edges_from([(1,2,{'time’='5pm’}),(2,3,{'time’=3am})]) #批量赋予属性
G.edge1[2][‘time’] #访问

我们还可以使用特定的函数批量返回属性,如

time = nx.get_edge_attributes(G,'time’) #返回得到以元组为key,time属性为值得一个字典
time[(1,2)]

图算法

nx.connected_components(G) #返回列表形式的G的全连通分量,每个分量一个子列表

类似的,networkx还提供各种图算法,具体可见官方文档。
画图

nx.draw(G) #画出图G
matplotlib.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(path1)

计算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(path1)

path=nx.all_pairs_shortest_path(G) #调用多源最短路径算法,计算图G所有节点间的最短路径
print(path0[2]) #输出节点0、2之间的最短路径序列: [0, 1, 2]

networkX用法整的更多相关文章

  1. 关于SqlServer表结构 2(回归基础)

    关于SqlServer表结构的问题.先来了解一下SqlServer中的数据类型以及它们的用法 整型: 短整型 smallint 整型 int 长整型 bitint 标识列:identity(它是只读的 ...

  2. TreeViewItem实现整行选中 (两种用法)

    用法一 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation&quo ...

  3. 【ABAP系列】SAP ABAP模块-取整操作中CEIL和FLOOR用法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP模块-取整操作中 ...

  4. go中整型的用法小结

    示例 // 整型的用法小结 // 注意: // 整型变量在使用时,遵循保小不保大的原则 // 尽量使用占用空间小的数据类型 package main import ( "fmt" ...

  5. [C]基本数据类型:整型(int)用法详解

    1.整型int C语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int是整型之一,一般被称为整型.以后,在不产生歧义的情况下,我们把整数类型和int都称为整 ...

  6. python中的数字取整(ceil,floor,round)概念和用法

    python中的数学运算函数(ceil,floor,round)的主要任务是截掉小数以后的位数.总体来说 就是取整用的.只是三者之间有微妙的区别:   floor() :把数字变小 ceil() : ...

  7. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

  8. python下的复杂网络编程包networkx的使用(摘抄)

    原文:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&classid=141080&vi ...

  9. Webform:Session、Cookie对象的用法

    Session 优点:1.使用简单,不仅能传递简单数据类型,还能传递对象.  2.数据量大小是不限制的. 缺点:1.在Session变量存储大量的数据会消耗较多的服务器资源. 2.容易丢失. 使用方法 ...

随机推荐

  1. postman参数化的方法

    1.准备csv格式的文件(注意第一行是是引用参数的名称) 2.编写请求,应用变量参数,并且设置断言 引用变量参数 3.把这个请求的文件夹runner一下批量执行 4.把第一步变量的csv文件在runn ...

  2. 基于python的测试框架behave----context

    使用behave时,每一步对应的方法都需要参数context,那么context是什么,为什么都需要传这个对象? 在所有用例中的context都是behave.runner.Context类的一个实例 ...

  3. JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招

    一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项(或曰“繁体中文”).传统做法是在服务端完成的,即通过某些控件或者过滤器转换文本语言.这里笔者介绍一种 ...

  4. 018:InnoDB 存储引擎、表空间

    目录 一.InnoDB 存储引擎 1. InnoDB的历史 2. InnoDB的特点 3. InnoDB存储引擎的文件 3.1 概述 3.2 InnoDB - 表空间 3.3 General表空间 3 ...

  5. 高效网页去重算法-SimHash

    记得以前有人问过我,网页去重算法有哪些,我不假思索的说出了余弦向量相似度匹配,但如果是数十亿级别的网页去重呢?这下糟糕了,因为每两个网页都需要计算一次向量内积,查重效率太低了!我当时就想:论查找效率肯 ...

  6. Windows网络编程基础知识

    1.WinSock的初始化 #include<iostream> #include<WinSock2.h> #include<MSWSock.h> #pragma ...

  7. MySql——进阶一(库表的建 删 改)

    基于学生管理系统建立 数据库 和 表 表的样式: 表(一)Student (学生use) 属性名 数据类型 可否为空 含 义 Sno varchar (20) 否 学号(主码) Sname varch ...

  8. java实现二叉树demo

    二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成.    这个定义是递归的.由于左.右子 ...

  9. Nginx记录客户端POST过来的具体信息

    vim nginx/config/nginx.config $request_body这个变量值就是POST数据 log_format main '$remote_addr - $remote_use ...

  10. spring声明式事务管理详情解析

    前沿:通过对spring事务管理有了比较深入学习,本文将不做实例,而是指定具体的类和配置文件进行讲解. 本文内容: 1.了解什么是声明式事务? 2.声明式事务管理分别有哪几种? 3.这几种事务管理之间 ...