是否可以在没有中间文件的情况下获得pydot图的输出?

Har*_*edi 6 python svg graphviz pygraphviz pydot

我有一个非常简单的图表,我想绘制为svg.例如:

# graph.dot
graph { 
        a -- b; 
        b -- c; 
    } 
Run Code Online (Sandbox Code Playgroud)

我目前正在使用pydot读取文件,然后生成svg文件,如下所示:

import pydot
graphs = pydot.graph_from_dot_file('graph.dot')
graphs[0].write_svg('graph.svg') # there is only 1 graph so the 0 index.
Run Code Online (Sandbox Code Playgroud)

但是,我需要这样做而不需要中间文件graph.dotgraph.svg.我有graph.dot一个字符串中的代码内容,对应于我需要字符串中的svg输出.

我需要这样的东西:

graph_dot = "... ..." # string, I have this
graph_svg = convert_dot_to_svg(graph_dot) 
# i need something like convert_dot_to_svg()
Run Code Online (Sandbox Code Playgroud)

我的问题不仅限于pydot.如果有人知道我可以做到这一点的web api,那么它也会这样做.

非常感谢,提前.

Har*_*edi 8

在花了一些时间查看pydot对象和graph对象的可用方法之后,可以想出:

以下代码有效:

import pydot    
dot_string = """graph { 
                    a -- b; 
                    b -- c; 
                } """

graphs = pydot.graph_from_dot_data( dot_string )
svg_string = graphs[0].create_svg() 
Run Code Online (Sandbox Code Playgroud)