如何在 python 中使用 pydot 附加 2 个图(graph1 和 graph2)
how to append 2 graphs (graph1 and graph2) using pydot in python
我用下面的代码生成一个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')
我的输出是
然后我使用以下代码生成另一个 pydot 图
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')
我的输出如下。
我的要求是如何合并这两个图(graph1 和 graph2)?
合并后我的预期输出为
我尝试使用以下代码,但是它不起作用..
graph3 = pydot.Dot(graph_type='digraph')
graph1_leaf = pydot.Node(graph1.get_node(B), style="filled",
fillcolor="green")
graph2_root = pydot.Node(graph2.get_node(C), style="filled",
fillcolor="green")
graph3.add_node(graph1_leaf)
graph3.add_node(graph2_root)
graph3.add_edge(pydot.Edge(graph1_leaf,graph2_root))
graph3.write_png('graph3.png')
请指导我在 python 中使用 pydot 合并这两个图。提前致谢..
我找不到描述连接 2 个图的文档。通常的做法似乎是加入 2 个子图(簇)。
以下是显示其完成方式的答案:
Edges between two subgraphs in pydot
另一个有用的答案:
Merge two dot graphs at a common node in python
更新,已编辑问题的答案:
您的代码存在一些问题:
- graph1.get_node(B) returns 节点列表
- 您只添加了用于连接图形的节点和边,而您需要所有其他节点和边
此代码应该 return 您想要的结果:
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')
希望对您有所帮助。
我用下面的代码生成一个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')
我的输出是
然后我使用以下代码生成另一个 pydot 图
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')
我的输出如下。
我的要求是如何合并这两个图(graph1 和 graph2)? 合并后我的预期输出为
我尝试使用以下代码,但是它不起作用..
graph3 = pydot.Dot(graph_type='digraph')
graph1_leaf = pydot.Node(graph1.get_node(B), style="filled",
fillcolor="green")
graph2_root = pydot.Node(graph2.get_node(C), style="filled",
fillcolor="green")
graph3.add_node(graph1_leaf)
graph3.add_node(graph2_root)
graph3.add_edge(pydot.Edge(graph1_leaf,graph2_root))
graph3.write_png('graph3.png')
请指导我在 python 中使用 pydot 合并这两个图。提前致谢..
我找不到描述连接 2 个图的文档。通常的做法似乎是加入 2 个子图(簇)。
以下是显示其完成方式的答案: Edges between two subgraphs in pydot
另一个有用的答案: Merge two dot graphs at a common node in python
更新,已编辑问题的答案:
您的代码存在一些问题:
- graph1.get_node(B) returns 节点列表
- 您只添加了用于连接图形的节点和边,而您需要所有其他节点和边
此代码应该 return 您想要的结果:
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')
希望对您有所帮助。