2016-07-11 5 views
4

나는 SVG로 음모를 꾸미고 싶은 아주 간단한 그래프를 가지고있다. 나는 현재 파일을 읽고 다음과 같이 SVG 파일을 생성하는 pydot을 사용하고중간 파일없이 pydot 그래프를 출력 할 수 있습니까?

# graph.dot 
graph { 
     a -- b; 
     b -- c; 
    } 

: 예를 들어

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. 

을 그러나, 나는 중간 파일 graph.dot 및 필요없이이 작업을 수행 할 필요가 graph.svg. 문자열에있는 graph.dot의 코드 내용을 갖고 있는데, 문자열에 svg 출력이 필요합니다. 내 질문 만 pydot 제한되지 않는다

graph_dot = "... ..." # string, I have this 
graph_svg = convert_dot_to_svg(graph_dot) 
# i need something like convert_dot_to_svg() 

:

내가 좋아하는 뭔가를해야합니다. 누구든지 내가 할 수있는 웹 API를 알고 있다면, 그렇게 할 것이다.

미리 감사드립니다.

+1

나는 pydot을 사용한 적이 없으니까 (하지만 나는 Graphviz를 알고있다.) 그러나 pydot 문서를 간략하게 살펴보면 파일 대신 파일과 유사한 객체를 사용할 수 있다는 것을 알 수있다. 따라서 표준 [io] (https://docs.python.org/3/library/io.html) 모듈에서 StringIO 또는 BytesIO를 시도해야합니다. –

+0

@ PM2Ring 당신은 입력을하기 위해'io'를 사용할 수 있습니다. 하지만'write_svg' 함수를 어떻게 대체할까요? –

+0

@ PM2Ring 언급 한 바와 같이 질문은 pydot 자체에만 국한되지 않습니다. Graphviz에서 도트 문자열에 해당하는 svg 문자열을 가져 오는 방법을 알려주시겠습니까? 어떤 방법 으로든 괜찮습니다. –

답변

3

pydot 객체와 객체에 사용할 수있는 방법을보고 좀 더 많은 시간을 소비 한 후에는 파악 될 수있다 :

다음 코드는 작동 :

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

graphs = pydot.graph_from_dot_data(dot_string) 
svg_string = graphs[0].create_svg() 
관련 문제