一、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()
图的创建:(三种方式)
- 图生成器,如例如binomial_graph和powerlaw_graph
- 从文本源中加载数据,如nx.read_adjlist
- 自主创建空图并添加点和边
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表示字的颜色。