networkx绘制网络图的知识点

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绘制带节点坐标图(节点、节点坐标和边)

你可能感兴趣的:(Networkx,绘图)