参考链接:
(7)Python 强大的图论和网络研究工具 networkx
https://blog.csdn.net/yuexiaomao/article/details/52425083
(8)图论算法(二):networkx 新建Graph(节点+连边)
https://blog.csdn.net/Canhui_WANG/article/details/80150255
MORE:https://networkx.github.io/documentation/networkx-1.10/tutorial/tutorial.html
下载链接:
Source and binary releases: http://cheeseshop.python.org/pypi/networkx/
Github (latest development): https://github.com/networkx/networkx/
官方文档:https://networkx.readthedocs.io/en/stable/index.html
(7)Python 强大的图论和网络研究工具 networkx
https://blog.csdn.net/yuexiaomao/article/details/52425083
#创建图
import networkx as nx
G=nx.Graph()
#Graph是结点(向量)与确定的结点对(称作边、链接等)的集合。在Networkx中,结点可以是任何可哈希的对象,
#如文本字符串、图片、XML对象、其他图,自定义对象等。(注意,Python的None对象不应该用作结点,)
#可哈希的:一个对象在它的生存期从来不会被改变(拥有一个哈希方法),能和其他对象区别(有比较方法)
#结点
#用很多方法来生成。Neatworkx包含很多图生成器函数和工具,可用来以多种格式来读写图。
#一次增加一个节点:
G.add_node(1)
#用序列增加一系列的节点
G.add_nodes_from([2,3])
#增加 nbunch结点。 nbunch是可迭代的结点容器 (序列、集合、图、文件等),其本身不是图的某个节点
H=nx.path_graph(10)#type(H) networkx.classes.graph.Graph
G.add_nodes_from(H)#这是将H中的许多结点作为G的节点
G.add_node(H)#这是将H作为G中的一个节点
#查看结点
G.node、#字典 {0: {}, 1: {}, 2: {}, 3: {},4: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}}
#边
#G能够一次增加一条边
G.add_edge(1,2) #只能增加边,有属性,除非指定属性名和值“属性名=值”
e=(2,3)
G.add_edge(*e) #注意! G.add_edge(e)会报错!G.add_edge(e)
#用序列增加一系列结点
G.add_edges_from([(1,2),(1,3)])
#增加 ebunch边。ebunch:包含边元组的容器,比如序列、迭代器、文件等
#这个元组可以是2维元组或 三维元组 (node1,node2,an_edge_attribute_dictionary),an_edge_attribute_dictionary比如:
#{‘weight’:3.1415}
G.add_edges_from(H.edges())
G.add_edges_from([(1,2),(1,3)])
G.add_node(1)
G.add_edge(1,2)
G.add_node("spam")
G.add_nodes_from("spam") # adds 4 nodes: 's', 'p', 'a', 'm'
G.edges(),G.nodes(),G.number_of_edges(),G.number_of_nodes()
#删除
G.remove_node(),G.remove_nodes_from()
G.remove_edge(),G.remove_edges_from()
G.remove_node(H) #删除不存在的东西会报错
#移除所有的节点和边
G.clear()
还有很多使用方法,有向图创建,绘图等功能简介,详见ipynb文件:
http://pan.baidu.com/s/1kVtuh2v
http://download.csdn.net/detail/yuexiaomao/9621045
(8)图论算法(二):networkx 新建Graph(节点+连边)
https://blog.csdn.net/Canhui_WANG/article/details/80150255
MORE:https://networkx.github.io/documentation/networkx-1.10/tutorial/tutorial.html
import networkx as nx
G = nx.Graph()
import networkx as nx
G = nx.Graph() # new graph
G.add_node('a') # add a new node
G.add_node('b') # add a new node
print G.nodes() # print nodes
import networkx as nx
G = nx.Graph() # new graph
H=nx.path_graph(10) # add 10 new nodes
G.add_nodes_from(H)
print G.nodes() # print nodes
import networkx as nx
G = nx.Graph() # new graph
H=nx.path_graph(10) # add 10 new nodes
G.add_nodes_from(H)
print G.nodes() # print nodes
G.add_edge(1,2) # add a new edge
print G.edges() # print edges
import networkx as nx
G = nx.Graph() # new graph
H=nx.path_graph(10) # add 10 new nodes
G.add_nodes_from(H)
print G.nodes() # print nodes
G.add_edges_from([(1,2),(1,3)]) # add new adges
print G.edges() # print edges