Python - 图相关知识(一)Graph-tools
导入包
from graph_tool.all import *
1、创建一个图
有向图
g = Graph()
无向图`ug = Graph(directed = False)
2、创建节点
# 创建一个节点,返回顶点描述符(顶点类的一个实例),存放在v1中
v1 = g.add_vertex()
# 创建多个节点, 创建10个顶点,返回有10个顶点的描述符迭代器
vlist = g.add_vertex(10)
# 删除节点
g.remove_vertex(v2)
# 获取顶点的索引
print(g.vertex_index[v])
# 遍历顶点
for v in g.verices():
print(v)
# 获得顶点描述符,通过编号获得顶点描述符
v = g.vertex(8)
# 查询点的出度和入度
print(v1.out_degree)
print(v1.in_degree)
# 遍历每个顶点的出入边及出入顶点
for v in g.vertices():
print 'vertex%d\'s out_edges'%g.vertex_index[v]
for e in v.out_edges():
print e
print'vertex%d\'sout_neighbours'%g.vertex_index[v]
for w in v.out_neighbours():
print w
3、创建边
# 创建边, 返回边描述符(边类的一个实例)
e = g.add_edge(v1, v2)
# 删除边
g.remove_edge(e)
# 获得边的索引
print(g.edge_index[e])
# 通过索引获得边描述符
e = g.edeg(2,3)
# 遍历边
for e in e.edges():
print(e)
# 查找边的原顶点、目标顶点
print(e.source(), e.target())
4、输出到pdf文件
graph_draw(g, vertex_text = g.vertex_index, vertex_font_size = 18, output_size = (200, 200), output="8-nodes.pdf")
5、属性映射:将额外的信息添加到顶点或者边上
创建新的顶点映射,参数为类型
vprop_string = self.g.new_vertex_property("string")
vprop_string[g.vertex(10)] = 'vertex1'
# 为边添加属性
eprop = g.new_edge_property("string")
g.edge_properties["sometime"] = eprop
g.list_properties()