如何在python中使用pydot附加2个图形(graph1和graph2)

时间:2018-05-27 05:28:25

标签: python pydot

我使用以下代码生成pydot图

ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation

我的输出是

graph1

我使用以下代码生成另一个pydot图

graph1 = pydot.Dot(graph_type='digraph')
A = pydot.Node("A", style="filled", fillcolor="green")
B = pydot.Node("B", style="filled", fillcolor="blue")
graph1.add_node(A)
graph1.add_node(B)
graph1.add_edge(pydot.Edge(A,B))
graph1.write_png('graph1.png')

我的输出如下。

graph2

我的请求是如何合并这两个图(graph1和graph2)? 合并后我的预期输出为

merged graph

我尝试使用以下代码,但是,它不起作用..

graph2 = pydot.Dot(graph_type='digraph')
C = pydot.Node("C", style="filled", fillcolor="green")
D = pydot.Node("D", style="filled", fillcolor="blue")
graph2.add_node(C)
graph2.add_node(D)
graph2.add_edge(pydot.Edge(C,D))
graph2.write_png('graph2.png')

请指导我在python中使用pydot合并这两个图表..提前感谢..

1 个答案:

答案 0 :(得分:1)

我无法找到描述加入2个图表的文档。通常的做法似乎是加入2个子图(集群)。

以下是回答,说明了它是如何完成的: Edges between two subgraphs in pydot

另一个有用的答案: Merge two dot graphs at a common node in python

更新,回答已编辑的问题:

您的代码存在一些问题:

  1. graph1.get_node(B)返回节点列表
  2. 您只需要添加节点和边缘,以便在需要所有其他节点和边缘时连接图形
  3. 此代码应返回您想要的结果:

    graph3 = pydot.Dot(graph_type='digraph')
    for node in graph1.get_nodes():
        graph3.add_node(node)
    for node in graph2.get_nodes():
        graph3.add_node(node)
    for edge in graph1.get_edges():
        graph3.add_edge(edge)
    for edge in graph2.get_edges():
        graph3.add_edge(edge)
    node_graph1 = graph1.get_node('B')[0]    
    node_graph2 = graph2.get_node('C')[0]
    graph3.add_edge(pydot.Edge(node_graph1,node_graph2))
    
    graph3.write_png('/tmp/graph3.png')
    
    希望它有所帮助。