首页 > 解决方案 > 用于在单个 PDF 中呈现多个 graphviz 图形的 Python 代码,每页一个

问题描述

考虑 Python 中定义的两个 graphviz 有向图 g1 和 g2,如下所示:

from graphviz import Digraph

g1 = Digraph(engine = "neato", node_attr={'shape':'record}, graph_attr={'splines':'ortho'})
g1.node('A')
g1.node('B')
g1.node('C')
g1.edge('A','B')
g1.edge('A','C')

g2 = Digraph(engine = "neato", node_attr={'shape':'record}, graph_attr={'splines':'ortho'})
g2.node('D')
g2.node('E')
g2.node('F')
g2.edge('D','E')
g2.edge('E','F')
g2.edge('D','F')

现在我可以使用以下方法在两个不同的 pdf 中渲染 g1 和 g2:

g1.render('g1_output.gv',view = 'True')
g2.render('g2_output.gv',view = 'True')

但我想将 g1 和 g2 都呈现在一个 pdf 中,每页一个。尽管我可以在此链接中找到一个点脚本来执行此操作(将具有多个图形的 DOT 脚本渲染为 PDF 每页一个图形),但我找不到在 Python 中执行相同操作的方法。此外,我使用的是neato引擎而不是dot。此外,我不能转移到点,因为正交样条是必要的并且点不支持它们。

另一种解决方案是在两个不同的 pdf 中渲染 g1 和 g2 并稍后合并它们,但我想知道是否有比这更好的解决方案。

PS:此处定义的图表仅用于说明目的,与原始图表不同。

标签: pythonrenderinggraphviz

解决方案


推荐阅读