networkx
添加节点的方式
import networkx as nx
G = nx.Graph()
G.add_node(1)
G.add_nodes_from([2,3,4,100])
G.add_nodes_from([
(3,{"color":"red"}),
(4,{"color":"green"})
])
print(G)
add_node 和 add_nodes_from的区别
- add_node无论传入什么,都作为一个节点添加入图中
- add_nodes_from 传入的是一个迭代器,会将迭代器的元素分别作为一个节点,添加入图中
这个可以类比应用于add_edge 与 add_edges_from , remove_node 和 remove_nodes_from , remove_edge 和 remove_edges_from
一种高级用法:
这样用的灵活性比较强,因为它允许图的图,文件的图,函数的图
import networkx as nx
G = nx.Graph()
H = nx.path_graph(11)
G.add_nodes_from(H)
G.add_node(H)
NodeView
调用G.nodes 时,会返回NodeView,下面是使用示例
G = nx.Graph()
G.add_nodes_from([1,2],color="red")
print(G.nodes.data())
G.add_node(3,size = 5)
print(G.nodes[3])
添加连边的方式
添加单条连边
注:添加连边时,G.add_edge(u_node,v_node) 这两个node可以不存在图中,会自动添加
import networkx as nx
G = nx.Graph()
G.add_nodes_from([1,2,3,4,5])
G.add_edge(1,2)
e = (3,4)
G.add_edge(*e)
print(G)
一次性添加多条连边
G.add_edges_from([(1,5),(2,4)])
print(G)
EdgeView
调用G.edges 或者G.edges() 时,会返回EdgeView,在访问边时,有很多用法,使用示例:
G.add_edge(1,3,color = "yellow")
G.add_edge(2,4,color = "blue")
G.edges
G.edges.data()
G.edge[1,3]
G.edges.data("color")
除了单独创建点与连边之外,其他构造图的方式
为图添加属性
H = nx.Graph(day="Friday" , name = "myGraph" , director = "zqqcee")
使用连边创建 (自动创建节点)
G = nx.Graph()
G.add_edge(1,2)
H = nx.DiGraph(G)
print(H.nodes)
print(H.edges)
构造函数
Graph 的构造函数如下:
def __init__(self, incoming_graph_data=None, **attr)
incoming_graph_data 默认为None,可以输入nodeList,edgeList等等
nx.Graph([(1,2,{"key":"value"})])
nx.Graph([(1,2),(2,3)])
访问图的节点邻居与连边
使用下标访问node
G = nx.Graph([(1, 2, {"color": "yellow"})])
G[1]
G[1] 运行结果是节点1 的邻居
如果边已经存在,可以使用下标表示法获取/设置边的属性
G.add_edge(1, 3)
G[1][3]['color'] = "blue"
adjacency视图
G.adj 返回的是adjacency视图,示例:
G = nx.Graph()
G.add_nodes_from([1,2,3],color="red")
G.add_edge(1,3)
print(G.adj)
清空图
G.clear()
|