1. 创建一个图
import networkx as nx
g = nx.Graph()
g.clear() #将图上元素清空
所有的构建复杂网络图的操作基本都围绕这个g来执行。
2. 节点
节点的名字可以是任意数据类型的,添加一个节点是
g.add_node(1)
g.add_node("a")
g.add_node("spam")
添加一组节点,就是提前构建好了一个节点列表,将其一次性加进来,这跟后边加边的操作是具有一致性的。
g.add_nodes_from([2,3])
or
a = [2,3]
g.add_nodes_from(a)
这里需要值得注意的一点是,对于add_node加一个点来说,字符串是只添加了名字为整个字符串的节点。但是对于
add_nodes_from加一组点来说,字符串表示了添加了每一个字符都代表的多个节点,exp:
g.add_node("spam") #添加了一个名为spam的节点
g.add_nodes_from("spam") #添加了4个节点,名为s,p,a,m
g.nodes() #可以将以上5个节点打印出来看看
加一组从0开始的连续数字的节点
H = nx.path_graph(10)
g.add_nodes_from(H) #将0~9加入了节点
#但请勿使用g.add_node(H)
删除节点
与添加节点同理
g.remove_node(node_name)
g.remove_nodes_from(nodes_list)
3. 边
边是由对应节点的名字的元组组成,加一条边
g.add_edge(1,2)
e = (2,3)
g.add_edge(*e) #直接g.add_edge(e)数据类型不对,*是将元组中的元素取出
加一组边
g.add_edges_from([(1,2),(1,3)])
g.add_edges_from([("a","spam") , ("a",2)])
通过nx.path_graph(n)加一系列连续的边
n = 10
H = nx.path_graph(n)
g.add_edges_from(H.edges()) #添加了0~1,1~2 ... n-2~n-1这样的n-1条连续的边
删除边
同理添加边的操作
g.remove_edge(edge)
g.remove_edges_from(edges_list)
4. 查看图上点和边的信息
g.number_of_nodes() #查看点的数量
g.number_of_edges() #查看边的