networkx使用笔记(二)之小试牛刀篇
来源:互联网 发布:替代硕鼠的软件 编辑:程序博客网 时间:2024/06/01 10:25
图的类型
Graph类是无向图的基类,无向图能有自己的属性或参数,不包含重边,允许有回路,节点可以是任何hash的python对象,节点和边可以保存key/value属性对。该类的构造函数为Graph(data=None,**attr),其中data可以是边列表,或任意一个Networkx的图对象,默认为none;attr是关键字参数,例如key=value对形式的属性。
MultiGraph是可以有重边的无向图,其它和Graph类似。其构造函数MultiGraph(data=None, *attr)。
DiGraph是有向图的基类,有向图可以有数自己的属性或参数,不包含重边,允许有回路;节点可以是任何hash的python对象,边和节点可含key/value属性对。该类的构造函数DiGraph(data=None,**attr),其中data可以是边列表,或任意一个Networkx的图对象,默认为none;attr是关键字参数,例如key=value对形式的属性。
MultiGraph是可以有重边的有向图,其它和DiGraph类似。其构造函数MultiDiGraph(data=None, *attr)。
图的创建
>>>import networkx as nx
>>>G=nx.Graph() #创建了一个没有节点和边的空图
这里的图Graph是由一系列节点及节点对(或者说边、链接)组成。在Networx中,节点可以是任何可以被hash的对象,包括文本字符串、图片、XML对象、Graph和自定义的节点等。
图的节点
图可以以多种方式进行增长。Networkx提供多个图生成功能用于读写图。
一次增加一个节点:>>>G.add_node(1)
通过包含节点的容器增加节点:#可以是列表、字典、文件的某些行、其它图等
列表>>>G.add_nodes_from([2,3])
其它图>>>G.add_nodes_from(H) #H is a graph object here
图的边
一次增加一条边:>>>G.add_edge(1,2)
通过包含边的容器增加:
列表>>>G.add_edges_from([(1,2),(1,3)])
边集合>>>G.add_edges_from(H.edges()) #H is also a graph here
属性
对于图,边和节点都能将key/value对作为自己的属性,保存在相关的dictionary中。该关联字典默认为空,但是能通过add_edge,add_node或操作进行修改。
添加图的属性:>>>G=nx.Graph(day="Friday")
添加节点的属性:#主要的方法是add_node()和add_nodes_from()
>>>G.add_node(1,time='5pm') #给节点1加属性对time:5pm
>>>G.add_nodes_from([3], time='2pm') #对前一个参数中的所有节点,添加属性对time:2pm
>>>G.node[1]['room']=714 #为G中的节点1添加属性对room:714
添加边的属性:#主要方法是add_edge(),add_edges()和G.edge
>>>G.add_edge(1,2,'weight'=4.7) #为1和2之间的边,添加属性weight:4.7
>>>G.add_edges_from([(3,4),(4,5)],color='red') #为连接3和4、4和5的边添加属性对color:red
>>>G[1][2]['weight']=4.7
>>>G.edge[1][2]['weight']=4
其它
len(G) #返回G中节点数目
n in G #检查节点n是否在G中,如在,返回true。
实例
任意创建一个Graph(默认为无重边的无向图),简单的节点和边的添加,显示一些统计参数,展示度分布图。
IDLE 2.6.6 >>> import networkx as nx //使用库的声明>>> G=nx.Graph() //初始化>>> G=nx.Graph(name='my graph')>>> e=[(1,2),(1,3),(2,3),(3,4),(4,5)]>>> G=nx.Graph(e) //为图G添加边>>> nx.degree(G){1: 2, 2: 2, 3: 3, 4: 2, 5: 1}>>> nx.degree_histogram(G)[0, 1, 3, 1]>>> nx.density(G) 0.5>>> nx.degree_c>>> nx.degree_centrality(G){1: 0.5, 2: 0.5, 3: 0.75, 4: 0.5, 5: 0.25}>>> nx.closeness_centrality(G){1: 0.5714285714285714, 2: 0.5714285714285714, 3: 0.80000000000000004, 4: 0.66666666666666663, 5: 0.44444444444444442}>>> nx.betweenness_centrality(G){1: 0.0, 2: 0.0, 3: 0.66666666666666663, 4: 0.5, 5: 0.0}>>> nx.triangles(G){1: 1, 2: 1, 3: 1, 4: 0, 5: 0}>>> nx.transitivity(G)0.5>>> nx.clustering(G){1: 1.0, 2: 1.0, 3: 0.33333333333333331, 4: 0.0, 5: 0.0}>>> import matplotlib.pyplot as plt>>> x=range(len(nx.degree_histogram(G)))>>> degree=nx.degree_histogram(G)>>> y=[z/float(sum(degree)) for z in degree]>>> plt.loglog(x,y,color="red",linewidth=4)[<matplotlib.lines.Line2D object at 0x03219570>]>>> plt.show()相关函数:
初始化:G=nx.Graph()
图相关属性的函数:
nx.degree(G)// 计算图的密度,其值为边数m除以图中可能边数(即n(n-1)/2)
nx.degree_centrality(G)//节点度中心系数。通过节点的度表示节点在图中的重要性,默认情况下会进行归一化,其值表达为节点度d(u)除以n-1(其中n-1就是归一化使用的常量)。这里由于可能存在循环,所以该值可能大于1.
nx.degree_centrality(G)//节点度中心系数。通过节点的度表示节点在图中的重要性,默认情况下会进行归一化,其值表达为节点度d(u)除以n-1(其中n-1就是归一化使用的常量)。这里由于可能存在循环,所以该值可能大于1.
nx.closeness_centrality(G)//节点距离中心系数。通过距离来表示节点在图中的重要性,一般是指节点到其他节点的平均路径的倒数,这里还乘以了n-1。该值越大表示节点到其他节点的距离越近,即中心性越高。
nx.betweenness_centrality(G)//节点介数中心系数。在无向图中,该值表示为节点作占最短路径的个数除以((n-1)(n-2)/2);在有向图中,该值表达为节点作占最短路径个数除以((n-1)(n-2))。
nx.transitivity(G)//图或网络的传递性。即图或网络中,认识同一个节点的两个节点也可能认识双方,计算公式为3*图中三角形的个数/三元组个数(该三元组个数是有公共顶点的边对数,这样就好数了)。
nx.clustering(G)//图或网络中节点的聚类系数。计算公式为:节点u的两个邻居节点间的边数除以((d(u)(d(u)-1)/2)。
最后的截图:
- networkx使用笔记(二)之小试牛刀篇
- networkx使用笔记(一)之安装篇
- networkx使用笔记(三)之好汉篇MySql(1)
- networkx使用笔记(三)之好汉篇numpy(2)
- networkx使用笔记(三)之好汉篇Scipy(3)
- networkx使用笔记(三)之好汉篇Matplotlib(4)
- networkx使用笔记(四)之实战篇--数据的获取
- networkx使用笔记(五)之实战篇--参数测量
- networkx笔记
- networkx笔记
- igraph/networkx学习笔记之…
- NetworkX学习笔记——基本功能使用
- 关于Networkx画图二
- 汐月教育之Networkx包 学习笔记
- 数据分析学习笔记-NetworkX的使用1
- NetworkX之Prim算法
- NetworkX学习笔记(1)
- networkx笔记:绘制基本网络图
- mysql乱码问题(转)
- 下列程序输出什么
- DLL封装 C++
- 解析:signal_pending与返回-ERESTARTSYS
- GPRS外置模块连接电脑进行拨号上网
- networkx使用笔记(二)之小试牛刀篇
- linux的所有全局配置文件
- 移动互联网
- Linux程序设计——进程和信号
- linux下c编程之内存共享shemget函数的实现及案例-bmi体重身高测试2
- 显示更多 UITabView
- 经典兔子问题
- java常用包
- dom笔记1_控件的常用事件