Dis*_*ame 5 python graphviz pygraphviz
我试图在pygraphviz中生成无向图,但是没有成功.似乎无论我做什么,图表总是指向.
Example #1
G = pgv.AGraph(directed=False)
G.is_directed() # true
Example #2
G = pgv.AGraph()
G.to_undirected().is_directed() # True
Example #3
G = pgv.AGraph(directed=False)
G.graph_attr.update(directed=False)
G.is_directed() # true
Run Code Online (Sandbox Code Playgroud)
我不知道为什么这么简单的事情无法奏效.我做错了什么?
我在 pygraphviz 1.2 上遇到同样的问题,但我有一个解决方法。
如果您使用DOT 语言(例如)将所需的图形类型指定为空图形graph foo {},并将其传递给 的构造函数AGraph,则 pygraphviz 会尊重该图形类型,即使它在作为关键字参数给出时可能会忽略它(如我的环境)。
>>> import pygraphviz as pgv
>>> foo = pgv.AGraph('graph foo {}')
>>> foo.is_directed()
False
>>> foo.add_edge('A', 'B')
>>> print foo
graph foo {
A -- B;
}
Run Code Online (Sandbox Code Playgroud)
该解决方法也适用于该strict参数,但在我的环境中也被忽略了。
使用以下函数而不是pgv.AGraph使用相同的 API:
def AGraph(directed=False, strict=True, name='', **args):
"""Fixed AGraph constructor."""
graph = '{0} {1} {2} {{}}'.format(
'strict' if strict else '',
'digraph' if directed else 'graph',
name
)
return pgv.AGraph(graph, **args)
Run Code Online (Sandbox Code Playgroud)