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

标签 python pydot

我用下面的代码生成一个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')

我的输出是

graph1

然后我使用以下代码生成另一个 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')

我的输出如下。

graph2

我的要求是如何合并这两个图(graph1 和 graph2)? 合并为

后我的预期输出

merged graph

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

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

更新,编辑问题的答案:

您的代码存在一些问题:

  1. graph1.get_node(B) 返回节点列表
  2. 您只添加用于连接图形的节点和边,而您需要所有其他节点和边

此代码应返回您想要的结果:

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')

希望对您有所帮助。

关于python - 如何在 python 中使用 pydot 附加 2 个图(graph1 和 graph2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50549288/

相关文章:

python - Ubuntu 14.04 : python can't import module pydot

python - 如何为 NetworkX 中的节点设置颜色?

python - 如何通过 yum 安装 python 包而不需要所有依赖项

python - 将网络图转换为 graphviz

python - 名称错误 : global name 'dot_parser' is not defined

python - 我在这个乒乓球游戏中画了一个边界,但 Racket 可以越过它。我该如何阻止它?

python - 在不使用 split() 函数的情况下解决 python 中的分割字符串问题

python - 如何在 Windows 10 上安装 Feather 格式?

python - 属性错误 : module 'pydot' has no attribute 'graph_from_dot_data' in spyder