Pygraphviz:指定点渲染器

Pygraphviz: specify dot renderer


我正在尝试将图形呈现为 SVG。 问题出在 PyGraphviz 上,但我制作了一个点文件 debug/make 以便于共享。 请注意,我的标签包含粗体文本,因此我必须使用类似 HTML 的标签,table 不是强制性的,但这是我在 SO 中搜索类似问题时应该使用的内容。
digraph test {
    node [shape=plain];
    n1 [label=< 
    <table border="1" cellborder="0" cellspacing="0">
        <tr><td align="center"><b>Not centered when using default renderer for SVG</b></td></tr>
        <tr><td align="text">Lorem ipsum</td></tr>
    </table> >];
}

graphviz documentation 指定“此外,所有这些标记目前只能通过 cairo 和 svg 渲染器使用。”

的确,当我使用 dot -Tsvg ./test.dot -o test1.svg 通过命令行渲染时,我得到了一个错误的结果,文本没有在节点中居中。 而当我指定渲染器 dot -Tsvg:svg ./test.dot -o test2.svg 时,一切正常。

现在的问题是调用 G.draw('test3.svg', prog='dot') 可能会调用第一个命令,它会产生错误对齐的结果。
我试图用 G.draw('test4.svg', prog='dot', args='-Tsvg:svg')G.draw('test5.svg', prog='dot', format='svg:svg') 指定渲染器,但在这两种情况下,生成的 svg 都是无效的(出于某种原因,有两个 标签)。

那么有没有办法通过pygraphviz指定渲染器?或者我应该将图形转储到 .dot 文件中并使用 subprocess.run 和正确的参数调用 dot?

谢谢

在检查了 PyGraphviz 的源代码后,我设法让它与 G.draw("test.svg", prog= 'dot', format='svg:cairo') 一起工作。

如果未提供格式参数,则会从文件名中推导出格式参数,这会导致 Dot 在同一个 SVG 文件中输出图形两次。