python学习(32)---networkx

一、networkx介绍

NetworkX提供图形(或网络)的数据结构以及图形算法,生成器和绘图工具。

函数,方法和变量名是lower_case_underscore(小写,下划线表示单词之间的空格)。

 

二、基础

1、导入模块

import networkx as nx

2、图/网络

图的类型

  • Graph:无多重边无向图。忽略两个节点之间的多个边,允许节点自身成环。
  • DiGraph:无多重边有向图
  • MultiGraph:有多重边无向图,允许在成对的节点之间存在多个无向边。
  • MultiDIGraph:有多重边有向图

所有图类均允许任何哈希对象作为节点。可哈希对象包括字符串,元组,整数等。如权重和标签之类的任意边属性都可以与边相关联。

   G = nx.Graph()#创建空的网络图
   G = nx.DiGraph()
   G = nx.MultiGraph()
   G = nx.MultiDiGraph()

图的创建:(三种方式)

  1. 图生成器,如例如binomial_graph和powerlaw_graph
  2. 从文本源中加载数据,如nx.read_adjlist
  3. 自主创建空图并添加点和边

 

3、节点和边

  • 节点:整数 / 字符串 / 描述节点的数据结构
  • 边:关键字/值对【可使用除'weight'以外的任何关键字来命名属性,可通过此关键字查询边】
#添加点
G.add_node('a')#添加点a
G.add_node(1,1)#用坐标来添加点
G.add_node(math.cos) # any hashable can be a node

#添加边
G.add_edge('x','y')#添加边,起点为x,终点为y,默认边值为1
G.add_edge(1,3,weight=0.9) #添加边,起点为1,终点为2,权重值为0.9
G.add_edge('y','x',function=math.cos) #Edge attributes can be anything
G.add_weight_edges_from([('x','y',1.0)])#第三个输入量为权值
#也可以
list = [[('a','b',5.0),('b','c',3.0),('a','c',1.0)]
G.add_weight_edges_from([(list)])

 

4、图形的显示

需要导入matplotlib
import matplotlib.pyplot as plt

nx.draw(G)
#nx.draw_networkx(G)

plt.show()

#若想让图形更精美
nx.draw(G,pos = nx.random_layout(G),node_color = 'b',edge_color = 'r',with_labels = True,font_size =18,node_size =20)

pos 指的是布局 主要有spring_layout , random_layout,circle_layout,shell_layout。node_color指节点颜色,有rbykw ,同理edge_color.
with_labels指节点是否显示名字,size表示大小,font_color表示字的颜色。

 

上一篇:2021-01-31


下一篇:networkx学习与使用——(5)节点和边的属性:聚集系数和邻里重叠度