Agraph类¶
- class AGraph(thing=None, filename=None, data=None, string=None, handle=None, name='', strict=True, directed=False, **attr)[源代码]¶
graphviz agraph类型的类。
示例使用
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G = pgv.AGraph(directed=True) >>> G = pgv.AGraph("file.dot")
graphviz graph关键字参数是经过处理的,因此可以像这样添加它们
>>> G = pgv.AGraph(landscape="true", ranksep="0.1")
或者
>>> G = pgv.AGraph() >>> G.graph_attr.update(landscape="true", ranksep="0.1")
和
>>> G.node_attr.update(color="red") >>> G.edge_attr.update(len="2.0", color="blue")
有关属性列表,请参阅http://www.graphviz.org/doc/info/attrs.html。
关键字参数:
它是一个通用输入类型(文件名、字符串、指针句柄、字典)。尝试自动检测类型,以便您可以编写,例如:
>>> d = {"1": {"2": None}, "2": {"1": None, "3": None}, "3": {"2": None}} >>> A = pgv.AGraph(d) >>> s = A.to_string() >>> B = pgv.AGraph(s) >>> h = B.handle >>> C = pgv.AGraph(h)
参数::
name: Name for the graph strict: True|False (True for simple graphs) directed: True|False data: Dictionary of dictionaries or dictionary of lists representing nodes or edges to load into initial graph string: String containing a dot format graph handle: Swig pointer to an agraph_t data structure
方法:
acyclic
\([args, copy] )反转有向图中的足够边,使图成为无圈图。
add_cycle
\(nlist)添加nlist中给定的节点循环。
add_edge
\(U[, v, key] )在节点U和V之间添加一条边。
add_edges_from
\(eBunch,** 属性)从容器ebunch向图形添加节点。
添加单个节点n。
add_nodes_from
\(nBunch,** 属性)从容器nbunch添加节点。
add_path
\(nlist)添加nlist中给定的节点路径。
add_subgraph
\([nbunch, name] )返回由nbunch中的节点诱导的子图。
clear
\()从图形中删除所有节点、边和属性。
copy
\()返回图表的副本。
degree
\([nbunch, with_labels] )返回nbunch容器中给定的节点程度。
degree_iter
\([nbunch, indeg, outdeg] )返回一个迭代器,覆盖nbunch容器中给定节点的度数。
delete_edge
\(U[, v, key] )从图中删除节点U和V之间的边。
delete_edges_from
\(eBunch)从挡块(边缘容器)上移除边缘。
delete_node
\(n)删除单个节点n。
delete_nodes_from
\(nBunch)从容器nbunch中删除节点。
delete_subgraph
\(名称)删除具有给定名称的子图。
draw
\([path, format, prog, args] )以指定格式将图形输出到路径。
edges
\([nbunch, keys] )返回图表中的边列表。
edges_iter
\([nbunch, keys] )返回图中边缘的迭代器。
from_string
\(字符串)从点格式的字符串加载图形。
get_edge
\(U,v[, key] )返回与边(u,v)对应的边对象(边)。
get_node
\(n)返回节点n对应的节点对象(节点)。
get_subgraph
\(名称)返回具有指定名称的现有子图,如果不存在,则返回无。
has_edge
\(U[, v, key] )返回真,边缘U-V在图中,否则返回假。
has_neighbor
\(U,v[, key] )如果u的边为v,则返回true;否则返回false。
has_node
\(n)如果n在图中,则返回true,否则返回false。
in_degree
\([nbunch, with_labels] )返回nbunch容器中给定的节点度数。
in_degree_iter
\([nbunch] )通过nbunch容器中给定节点的in度返回迭代器。
in_edges
\([nbunch, keys] )返回图形中的入边列表。
in_edges_iter
\([nbunch, keys] )在图中的边上返回迭代器。
in_neighbors
\(n)返回n的前置节点列表。
is_directed
\()如果图是定向的,则返回true;否则返回false。
is_strict
\()如果图是严格的,则返回true;否则返回false。
is_undirected
\()如果图是无向的,则返回true;否则返回false。
iterdegree
\([nbunch, indeg, outdeg] )返回一个迭代器,覆盖nbunch容器中给定节点的度数。
iteredges
\([nbunch, keys] )返回图中边缘的迭代器。
iterindegree
\([nbunch] )通过nbunch容器中给定节点的in度返回迭代器。
iterinedges
\([nbunch, keys] )在图中的边上返回迭代器。
iterneighbors
\(n)通过附加到n的节点返回迭代器。
iternodes
\()在图中的所有节点上返回迭代器。
iteroutdegree
\([nbunch] )返回一个迭代器,遍历nbunch容器中给定节点的out度。
iteroutedges
\([nbunch, keys] )在图中的边上返回迭代器。
iterpred
\(n)返回n的前置节点上的迭代器。
itersucc
\(n)返回n的后续节点上的迭代器。
layout
\([prog, args] )将位置分配给图中的节点。
neighbors
\(n)返回附加到n的节点列表。
neighbors_iter
\(n)通过附加到n的节点返回迭代器。
nodes
\()返回图表中所有节点的列表。
nodes_iter
\()在图中的所有节点上返回迭代器。
number_of_edges
\()返回图中的边数。
number_of_nodes
\()返回图中的节点数。
order
\()返回图中的节点数。
out_degree
\([nbunch, with_labels] )返回nbunch容器中给定的节点的出度。
out_degree_iter
\([nbunch] )返回一个迭代器,遍历nbunch容器中给定节点的out度。
out_edges
\([nbunch, keys] )返回图表中的外边缘列表。
out_edges_iter
\([nbunch, keys] )在图中的边上返回迭代器。
out_neighbors
\(n)返回n的后续节点列表。
predecessors
\(n)返回n的前置节点列表。
predecessors_iter
\(n)返回n的前置节点上的迭代器。
read
\(路径)从路径上的点格式文件读取图形。
remove_edge
\(U[, v, key] )从图中删除节点U和V之间的边。
remove_edges_from
\(eBunch)从挡块(边缘容器)上移除边缘。
remove_node
\(n)删除单个节点n。
remove_nodes_from
\(nBunch)从容器nbunch中删除节点。
remove_subgraph
\(名称)删除具有给定名称的子图。
reverse
\()返回边缘方向相反的有向图副本。
string
\()以点格式返回图形的字符串(Unicode)表示形式。
string_nop
\()以点格式返回图形的字符串(Unicode)表示形式。
subgraph
\([nbunch, name] )返回由nbunch中的节点诱导的子图。
subgraph_parent
\([nbunch, name] )返回子图的父图,如果图是根图,则返回无。
subgraph_root
\([nbunch, name] )返回子图的根图,如果图是根图,则返回无。
subgraphs
\()返回图中所有子图的列表。
subgraphs_iter
\()子图上的迭代器。
successors
\(n)返回n的后续节点列表。
successors_iter
\(n)返回n的后续节点上的迭代器。
to_directed
\(** kwds)返回图形的定向副本。
to_string
\()以点格式返回图形的字符串表示形式。
to_undirected
\()返回无向图副本。
tred
\([args, copy] )图的传递约简。
unflatten
\([args] )调整有向图以提高布局纵横比。
write
\([path] )将点格式的图形写入路径上的文件。
close
get_name
- acyclic(args='', copy=False)[源代码]¶
在有向图中反转足够多的边,使图非循环。修改现有图形。
要创建新图形,请使用
>>> import pygraphviz as pgv >>> A = pgv.AGraph(directed=True) >>> B = A.acyclic(copy=True)
有关算法的详细信息,请参阅graphviz“非循环”程序。
- add_edge(u, v=None, key=None, **attr)[源代码]¶
在节点U和V之间添加一条边。
如果节点u和v不在图中,它们将被添加。
如果u和v不是字符串,将尝试转换为字符串。如果u和v具有有效的字符串表示形式,则字符串转换将起作用(如果不确定,请尝试str(u))。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_edge("a", "b") >>> G.edges() [('a', 'b')]
可选键参数允许将键分配给边缘。这对于区分多边缘图中的平行边特别有用(strict=false)。
>>> G = pgv.AGraph(strict=False) >>> G.add_edge("a", "b", "first") >>> G.add_edge("a", "b", "second") >>> sorted(G.edges(keys=True)) [('a', 'b', 'first'), ('a', 'b', 'second')]
创建边缘或创建后更新边缘时,可以添加属性
>>> G.add_edge("a", "b", color="green")
属性必须是有效字符串。
有关属性列表,请参阅http://www.graphviz.org/doc/info/attrs.html。
- add_edges_from(ebunch, **attr)[源代码]¶
从容器ebunch向图形添加节点。
ebunch是边缘的容器,如列表或字典。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> elist = [("a", "b"), ("b", "c")] >>> G.add_edges_from(elist)
创建边缘或创建后更新边缘时,可以添加属性
>>> G.add_edges_from(elist, color="green")
- add_node(n, **attr)[源代码]¶
添加单个节点n。
如果n不是字符串,将尝试转换为字符串。如果n具有有效的字符串表示形式,则字符串转换将工作(如果不确定,请尝试str(n))。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_node("a") >>> G.nodes() ['a'] >>> G.add_node(1) # will be converted to a string >>> G.nodes() ['a', '1']
属性可以在创建时添加到节点,也可以在创建后更新(属性值必须是字符串)
>>> G.add_node(2, color="red")
有关属性列表,请参阅http://www.graphviz.org/doc/info/attrs.html。
匿名graphviz节点当前未实现。
- add_nodes_from(nbunch, **attr)[源代码]¶
从容器nbunch添加节点。
nbunch可以是任何可重写的容器,如列表或字典。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> nlist = ["a", "b", 1, "spam"] >>> G.add_nodes_from(nlist) >>> sorted(G.nodes()) ['1', 'a', 'b', 'spam']
属性可以在创建时添加到节点,也可以在创建后更新。
>>> G.add_nodes_from(nlist, color="red") # set all nodes in nlist red
- degree(nbunch=None, with_labels=False)[源代码]¶
返回nbunch容器中给定的节点程度。
使用选项with_labels=true返回一个字典,该字典由节点键控,值设置为度数。
- delete_edge(u, v=None, key=None)¶
从图中删除节点U和V之间的边。
使用可选键参数将只删除边缘匹配(U、V、键)。
- delete_edges_from(ebunch)¶
从挡块(边缘容器)上移除边缘。
- delete_node(n)¶
删除单个节点n。
尝试删除不在图中的节点将产生错误。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_node("a") >>> G.remove_node("a")
- delete_nodes_from(nbunch)¶
从容器nbunch中删除节点。
nbunch可以是任何可重写的容器,如列表或字典。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> nlist = ["a", "b", 1, "spam"] >>> G.add_nodes_from(nlist) >>> G.remove_nodes_from(nlist)
- delete_subgraph(name)¶
删除具有给定名称的子图。
- property directed¶
如果图是定向的,则返回true;否则返回false。
- draw(path=None, format=None, prog=None, args='')[源代码]¶
以指定格式将图形输出到路径。
将尝试根据文件扩展名猜测输出格式 path . 如果失败,那么 format 将使用参数。
注意,如果 path 是通过调用os.fdopen()返回的文件对象,那么发现格式的方法将不起作用。在这种情况下,应该显式地设置 format 参数;否则,它将默认为“dot”。
如果path为None,则结果作为Bytes对象返回。
格式(并非每个系统都可以使用,这取决于graphviz的构建方式)
'canon'、'cmap'、'cmapx'、'cmapx_np'、'dia'、'dot'、'fig'、'gd'、'gd2'、'gif'、'hpgl'、'imap'、'imap_np'、'ismap'、'jpe'、'jpeg'、'jpg'、'mif'、'mp'、'pcl'、'pdf'、'pic'、'plain'、'ext'、'png'、'ps'、'ps2'、'svg'、'svgz'、'
如果未指定prog,并且图形具有位置(请参见layout()),则不会执行其他图形定位。
可选程序= ['neato''dot''twopi''circo''fdp''nop'] 将使用指定的graphviz布局方法。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_edges_from([(0, 1), (1, 2), (2, 0), (2, 3)]) >>> G.layout()
#使用当前节点位置,在‘file.pdf’>>G.raw(“file.pdf”)中输出pdf
#使用点定位,在‘file’>G.raw(“file”,format=“png”,prog=“dot”)中输出PNG
#使用关键字‘args’将附加参数传递给raphviz>G.raw(“test.pdf”,prog=“twopi”,args=“-Gepsilon=1”)>G.raw(“test2.pdf”,args=“-NShape=box-Edr=Forward-Ecolor=red”)
对于大型图形,布局可能需要很长时间。
- edges(nbunch=None, keys=False)[源代码]¶
返回图表中的边列表。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的边。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_edge("a", "b") >>> G.add_edge("c", "d") >>> print(sorted(G.edges())) [('a', 'b'), ('c', 'd')] >>> print(G.edges("a")) [('a', 'b')]
- edges_iter(nbunch=None, keys=False)[源代码]¶
返回图中边缘的迭代器。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的边。
注意:在迭代边缘时修改图形结构可能会产生不可预测的结果。使用edges()作为替代方法。
- from_string(string)[源代码]¶
从点格式的字符串加载图形。
覆盖任何现有图形。
要从字符串生成新图形,请使用
>>> import pygraphviz as pgv >>> s = "digraph {1 -> 2}" >>> A = pgv.AGraph() >>> t = A.from_string(s) >>> A = pgv.AGraph(string=s) # specify s is a string >>> A = pgv.AGraph(s) # s assumed to be a string during initialization
- get_edge(u, v, key=None)[源代码]¶
返回与边(u,v)对应的边对象(边)。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_edge("a", "b") >>> edge = G.get_edge("a", "b") >>> print(edge) ('a', 'b')
使用可选键参数将只获得边缘匹配(U、V、键)。
- get_node(n)[源代码]¶
返回节点n对应的节点对象(节点)。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_node("a") >>> node = G.get_node("a") >>> print(node) a
- has_edge(u, v=None, key=None)[源代码]¶
返回真,边缘U-V在图中,否则返回假。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_edge("a", "b") >>> G.has_edge("a", "b") True
可选键参数将限制匹配到边(U、V、键)。
- has_neighbor(u, v, key=None)[源代码]¶
如果u的边为v,则返回true;否则返回false。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_edge("a", "b") >>> G.has_neighbor("a", "b") True
可选键参数将只找到边(u、v、key)。
- has_node(n)[源代码]¶
如果n在图中,则返回true,否则返回false。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_node("a") >>> G.has_node("a") True >>> "a" in G # same as G.has_node('a') True
- in_degree(nbunch=None, with_labels=False)[源代码]¶
返回nbunch容器中给定的节点度数。
使用选项with_labels=true返回一个字典,该字典由节点键控,值设置为度数。
- in_edges_iter(nbunch=None, keys=False)[源代码]¶
在图中的边上返回迭代器。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的外边缘。
注意:在迭代边缘时修改图形结构可能会产生不可预测的结果。在_edges()中用作替代项。
- in_neighbors(n)¶
返回n的前置节点列表。
- iterdegree(nbunch=None, indeg=True, outdeg=True)¶
返回一个迭代器,覆盖nbunch容器中给定节点的度数。
返回(节点、度数)对。
- iteredges(nbunch=None, keys=False)¶
返回图中边缘的迭代器。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的边。
注意:在迭代边缘时修改图形结构可能会产生不可预测的结果。使用edges()作为替代方法。
- iterindegree(nbunch=None)¶
通过nbunch容器中给定节点的in度返回迭代器。
返回(节点、度数)对。
- iterinedges(nbunch=None, keys=False)¶
在图中的边上返回迭代器。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的外边缘。
注意:在迭代边缘时修改图形结构可能会产生不可预测的结果。在_edges()中用作替代项。
- iterneighbors(n)¶
通过附加到n的节点返回迭代器。
注意:在对节点邻居进行迭代时修改图结构可能会产生不可预知的结果。使用neighbors()作为替代方法。
- iternodes()¶
在图中的所有节点上返回迭代器。
注意:在对节点进行迭代时修改图形结构可能会产生不可预知的结果。使用nodes()作为替代方法。
- iteroutdegree(nbunch=None)¶
返回一个迭代器,遍历nbunch容器中给定节点的out度。
返回(节点、度数)对。
- iteroutedges(nbunch=None, keys=False)¶
在图中的边上返回迭代器。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的外边缘。
注意:在迭代边缘时修改图形结构可能会产生不可预测的结果。使用out-edges()作为替代方法。
- iterpred(n)¶
返回n的前置节点上的迭代器。
注意:在对节点前置任务进行迭代时修改图表结构可能会产生不可预测的结果。使用前置任务()作为替代。
- itersucc(n)¶
返回n的后续节点上的迭代器。
注意:在对节点后续节点进行迭代时修改图表结构可能会产生不可预测的结果。使用继任者()作为备选方案。
- layout(prog='neato', args='')[源代码]¶
将位置分配给图中的节点。
可选程序= ['neato''dot''twopi''circo''fdp''nop'] 将使用指定的graphviz布局方法。
>>> import pygraphviz as pgv >>> A = pgv.AGraph() >>> A.add_edge(1, 2) >>> A.layout() >>> A.layout(prog="neato", args="-Nshape=box -Efontsize=8")
使用关键字args向graphviz程序添加其他参数。
对于大型图形,布局可能需要很长时间。
- property name¶
- out_degree(nbunch=None, with_labels=False)[源代码]¶
返回nbunch容器中给定的节点的出度。
使用选项with_labels=true返回一个字典,该字典由节点键控,值设置为度数。
- out_edges_iter(nbunch=None, keys=False)[源代码]¶
在图中的边上返回迭代器。
如果可选的nbunch(节点容器),则只返回与nbunch中节点相邻的外边缘。
注意:在迭代边缘时修改图形结构可能会产生不可预测的结果。使用out-edges()作为替代方法。
- out_neighbors(n)¶
返回n的后续节点列表。
- remove_node(n)[源代码]¶
删除单个节点n。
尝试删除不在图中的节点将产生错误。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> G.add_node("a") >>> G.remove_node("a")
- remove_nodes_from(nbunch)[源代码]¶
从容器nbunch中删除节点。
nbunch可以是任何可重写的容器,如列表或字典。
>>> import pygraphviz as pgv >>> G = pgv.AGraph() >>> nlist = ["a", "b", 1, "spam"] >>> G.add_nodes_from(nlist) >>> G.remove_nodes_from(nlist)
- property strict¶
如果图是严格的,则返回true;否则返回false。
严格的图不允许平行边或自循环。
- subgraph(nbunch=None, name=None, **attr)¶
返回由nbunch中的节点诱导的子图。
- to_string()[源代码]¶
以点格式返回图形的字符串表示形式。
to_string() 使用“agwrite”生成不带渲染的“dot”格式。该函数 string_nop() 使用“NOP”进行布局,并渲染为“点”。
- tred(args='', copy=False)[源代码]¶
图的传递约简。修改现有图形。
要创建新图形,请使用
>>> import pygraphviz as pgv >>> A = pgv.AGraph(directed=True) >>> B = A.tred(copy=True)
有关算法的详细信息,请参阅graphviz“tred”程序。