教程¶
该API与NetworkX非常相似。https://networkx.org/documentation/latest/tutorial.html上的NetworkX教程的大部分内容都适用于PyGraphviz。有关主要区别,请参阅http://pygraphviz.github.io/documentation/latest/reference/api_notes.html。
启动¶
导入pygraphviz
>>> import pygraphviz as pgv
图¶
要生成空的pygraphviz图,请使用agraph类:
>>> G = pgv.AGraph()
可以使用严格的关键字和定向关键字来控制所需的图形类型。默认设置是创建一个严格的图形(没有平行边或自循环)。要创建具有可能的平行边和自循环的有向图,请使用
>>> G = pgv.AGraph(strict=False, directed=True)
您可以指定在初始化时要读取的点格式文件:
>>> G = pgv.AGraph("Petersen.dot")
用于初始化图的其他选项是使用字符串,
>>> G = pgv.AGraph("graph {1 - 2}")
使用口述,
>>> d = {"1": {"2": None}, "2": {"1": None, "3": None}, "3": {"2": None}}
>>> A = pgv.AGraph(d)
或者使用指向agraph数据结构的swig指针,
>>> h = A.handle
>>> C = pgv.AGraph(h)
节点和边¶
节点和边可以一次添加一个
>>> G.add_node("a") # adds node 'a'
>>> G.add_edge("b", "c") # adds edge 'b'-'c' (and also nodes 'b', 'c')
或者从列表或容器中。
>>> nodelist = ["f", "g", "h"]
>>> G.add_nodes_from(nodelist)
如果节点不是字符串,将尝试将其转换为字符串
>>> G.add_node(1) # adds node '1'
属性¶
要设置图形、节点和边的默认属性,请使用“图形”、“节点”和“边”字典。
>>> G.graph_attr["label"] = "Name of graph"
>>> G.node_attr["shape"] = "circle"
>>> G.edge_attr["color"] = "red"
在初始化图形时可以设置图形属性
>>> G = pgv.AGraph(ranksep="0.1")
添加节点或边时可以添加属性,
>>> G.add_node(1, color="red")
>>> G.add_edge("b", "c", color="blue")
或者通过node或edge attr字典,
>>> n = G.get_node(1)
>>> n.attr["shape"] = "box"
>>> e = G.get_edge("b", "c")
>>> e.attr["color"] = "green"
布局和图纸¶
Pygraphviz为图形的布局和绘制提供了几种方法。
要以点格式将图形存储和打印为python字符串,请使用
>>> s = G.string()
要写入文件,请使用
>>> G.write("file.dot")
使用graphviz布局算法向节点添加位置
>>> G.layout() # default to neato
>>> G.layout(prog="dot") # use dot
将图形渲染为图像
>>> G.draw("file.png") # write previously positioned graph to PNG file
>>> G.draw("file.ps", prog="circo") # use circo to position, write PS file