python – pydot中两个子图之间的边缘
作者:互联网
有谁知道如何在pydot中的两个子图(簇)之间添加边?
callgraph = pydot.Dot(graph_type='digraph',fontname="Verdana")
cluster_foo=pydot.Cluster('foo',label='foo')
cluster_foo.add_node(pydot.Node('foo_method_1',label='method_1'))
callgraph.add_subgraph(cluster_foo)
cluster_bar=pydot.Cluster('bar',label='Component1')
cluster_bar.add_node(pydot.Node('bar_method_a'))
callgraph.add_subgraph(cluster_bar)
我试过了:
callgraph.add_edge(pydot.Edge("foo","bar"))
但不起作用.它只是在初始图形中创建了另外两个标记为“foo”和“bar”的节点,并在它们之间放置了边缘和边缘!
有人可以帮忙吗?
谢谢!
解决方法:
> Graphviz要求边缘位于2个集群中的节点之间.
>添加图形参数compound =’true’.
>使用边参数lhead =和ltail =.
所以你的代码将成为:
callgraph = pydot.Dot(graph_type='digraph', fontname="Verdana", compound='true')
cluster_foo=pydot.Cluster('foo',label='foo')
callgraph.add_subgraph(cluster_foo)
node_foo = pydot.Node('foo_method_1',label='method_1')
cluster_foo.add_node(node_foo)
cluster_bar=pydot.Cluster('bar',label='Component1')
callgraph.add_subgraph(cluster_bar)
node_bar = pydot.Node('bar_method_a')
cluster_bar.add_node(node_bar)
callgraph.add_edge(pydot.Edge(node_foo, node_bar, ltail=cluster_foo.get_name(), lhead=cluster_bar.get_name()))
标签:python,graph,graphviz,edge,pydot 来源: https://codeday.me/bug/20190621/1253679.html