1.创建一个空的无向图
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.clear() # 清空图上的元素
networkx能创建四种图:Graph(无多重边的无向图)、DiGraph(无多重边的有向图)、MultiGraph(有多重边的无向图)、MultiDigraph(有多重边的有向图)。
# 创建出空的网络图
G = nx.Graph()
G = nx.Digraph()
G = nx.MultiGraph()
G = nx.MultiDiGraph()
2.添加节点
单个节点
G.add_node("hello") # 添加一个名为hello的节点
多个节点
nodes = list(range(5))
G.add_nodes_from(nodes)
G.nodes() # 打印图中所有节点,以列表的形式(list)
添加一组从0开始的数字节点
n = nx.path_graph(5)
G.add_nodes_from(n) # 将0~4加入节点
# 打印节点对应的边
# nx.path_graph(5).edges() # [(0, 1), (1, 2), (2, 3), (3, 4)]
删除节点
G.remove_node(node_name)
G.remove_nodes_from(node_list)
3.添加边
添加一条边
G.add_edge(1,2)
a = (2,3)
G.add_edge(*a) # 直接G.add_edge(a)数据类型不对,*是将元组中数据提取出
添加一组边
G.add_edges_from([(1, 2), (1, 3), (2, 3)])
# 添加一系列连续的边
E = nx.path_graph(5)
G.add_edges_from(E.edges()) # 添加 0~1、1~2 .......、(n-2)~(n-1) 这样的n-1条边
删除边
G.remove_edge(dege)
G.remove_deges_from(edges_list)
4.查看图(graph)上节点和边的信息
G.number_of_nodes() # 查看节点的数量
G.number_of_edges() # 查看边的数量
G.nodes() # 返回所有点的信息(以列表的形式,list)
G.edges() #返回所有边的信息(以列表形式,list,其中每个元素是一个元组,tuple)
G.neighbors(1) # 将于1这个节点相连的节点信息返回,以列表形式
G[1] # 查看所有与节点1 相连边的属性,输出格式:{0: {}, 2: {}}
5.无向图与有向图的转换
# 在添加完节点和边之后就可以开始
G = G.to_undirected()
G = G.to_directed()
6.图的构造(部分)
nx.draw(G)
nx.draw_networkx(G)
nx.draw_networkx_nodes(G,pos,[nodelist]) # 绘制网络G的节点图
nx.draw_networkx_edges(G,pos[edgelist]) # 绘制网络G的边图
nx.draw_networkx_edge_labels(G, pos[, ...]) # 绘制网络G的边图,边有label
nx.draw_random(G) # 节点随机分布
nx.draw_circular(G) # 节点分布成一个环
绘制带节点坐标的图可参考:使用networkx绘制带节点坐标图(节点、节点坐标和边)