Note

This documents the development version of PyGraphviz. Documentation for the current release can be found here.

教程

该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