근래에 여러가지 다이어 그램들을 그릴 일들이 많아서 graphviz 를 많이 사용하고 있습니다.


graphviz 스크립트를 작성한 다음에 dot 명령어를 이용하여 command line 에서 그림을 그리곤 하는데~


검색을 좀 해보니 웹어서도 바로 볼 수 있는 방법이 있더군요.


아래 사이트에 접속하면 웹에서 바로  graphviz 스크립트의 그림을 확인하고 그림을 다운로드 받으 수 있습니다. 


https://stamm-wilbrandt.de/GraphvizFiddle/


graphviz 가 설치 안된 컴퓨터에서는 위 사이트를 통해 스크립트를 작성하고 결과를 확인한 후에 작성한 스크립트를 파일로 저장 할 수 있습니다.


아래 주소를 보면 graphviz 예제들이 있는데 


http://www.tonyballantyne.com/graphs.html


예제중에 하나를 간단하게 그려보면 다음과 같습니다. 



위 그림에서 보듯이 아래 주소의 Graphviz Gallery 에 있는 것들 중에 몇개는 링크로 되어 있어서 쉽게 그려 볼 수 도 있더군요. 


궁금하신 분들은 한번씩 클릭해 보시는것도 좋을 듯 합니다. 


http://graphviz.org/Gallery.php


Graphviz 가 스크립트를 사용하여 그래프를 그리는 것과 같이 mscgen 은 sequence diagram 을 간단한 스크립트를 활용하여 그릴 수 있습니다.

 

http://iamaman.tistory.com/1685

 

Mscgen 은 다음 사이트에 다운로드 받을 수 있고 mscgen 사용 방법에 대해 공부 할 수 있습니다.

 

http://www.mcternan.me.uk/mscgen/

 

Graphviz 와 마찮가지로 mscgen 역시도 Doxygen 에서 sequence diagram 을 넣는데 활용 될 수 있습니다.

 

다음과 같은 mscgen script 파일(example0.msc)을 작성하고

 

# http://www.mcternan.me.uk/mscgen/img/example0.msc


# Example fictional MSC

msc {

a,b,c;

 

a->b [ label = "ab()" ] ;

b->c [ label = "bc(TRUE)"];

c=>c [ label = "process(1)" ];

c=>c [ label = "process(2)" ];

...;

c=>c [ label = "process(n)" ];

c=>c [ label = "process(END)" ];

a<<=c [ label = "callback()"];

--- [ label = "If more to run", ID="*" ];

a->a [ label = "next()"];

a->c [ label = "ac1()\nac2()"];

b<-c [ label = "cb(TRUE)"];

b->b [ label = "stalled(...)"];

a<-b [ label = "ab() = FALSE"];

}

 

다음과 같이 명령어를 수행하면

 

mscgen -T png -i example0.msc

 

다음과 같이 아주 깔끔한 sequence diagram 이 만들어 집니다.

Doxygen 을 사용해 보신 분들이라면 graphviz 에 대해 아실 거라는 생각이 듭니다.

 

아래 포스팅에서도 파이썬을 활용하여 Graphviz 를 그리는 방법에 대해 소개한 적이 있는데요

 

http://iamaman.tistory.com/1462

 

Graphviz 의 공식 홈페이지는 아래와 같습니다.

 

http://www.graphviz.org/

 

설치는 아래 주소에서 할 수 있습니다.

 

http://www.graphviz.org/Download..php

 

 

설치를 하고 Graphviz 설치 폴더의 bin 폴더를 환경변수의 path 에 설정해 놓고 사용하는 게 좋습니다.

 

매뉴얼은 아래 주소의 웹페이지에서도 볼 수 있지만


http://www.graphviz.org/Documentation.php

 

아래 폴더에도 dotguide.pdf 라는 매뉴얼이 설치가 됩니다.

 

graphviz-2.38\share\graphviz\doc\pdf\dotguide.pdf

 

오프 라인 상태에서는 dotguide.pdf 를 사용하는 게 좋을 듯 합니다.

 

dotguide.pdf 에 있는 간단한 예제를 실행해보면

 

아래 코드를 test.dot 라고 파일로 저장하고~

 

digraph G {

    main -> parse -> execute;

    main -> init;

    main -> cleanup;

    execute -> make_string;

    execute -> printf;

    init -> make_string;

    main -> printf;

    execute -> compare;

}

 

test.dot 파일이 있는 위치에서 CMD 창에서 다음과 같이 명령어를 써 주면~

 

dot -Tjpg test.dot -o graph1.jpg

 

다음과 같이 graph1.jpg 라는 다이어 그램 파일이 생성 됩니다.

 

 

위에 소개한 매뉴얼을 봐도 되고~ 아래 주소의 Gallery 에 가보면 다양한 샘플들이 있으니 참조 할 수도 있습니다.

 

http://www.graphviz.org/Gallery.php


다음과 같이  배치 파일을 만들어서 사용하면 좀더 편리하게 사용 할 수 있습니다.



dot2image.bat


cd %1

mkdir ImageFolder

for /f "delims=" %%A in ('dir *.dot /b /a-d-h-s') Do (dot -Tpng %%A -o "ImageFolder/%%~nA.png")



오늘은 Python Graphviz 모듈 사용법에 대해 간단히 알아보겠습니다.

 

Doxygen 을 사용해 본 분들은 아시겠지만 GraphViz 는 스크립트로 다이어그램 등을 그릴 수 있는 툴 입니다.

 

규격화된 다양한 그래프들을 스크립트로 그릴 수 있으니 노가다를 안 해도 돼서 굉장히 편리하더군요.

 

아무튼 이 GraphViz 를 python 을 통해서 사용하는 방법이 있더군요.

 

바로 GraphViz 모듈을 사용하는 건데요~ 아래 주소에 그 예나 설치 방법 등이 나와 있더군요.

 

https://pypi.python.org/pypi/graphviz

 

pip 를 설치하신 분들은 그냥 간단하게 커맨드 창 또는 쉘에서 pip install GraphViz 라고 타이핑 하면 설치가 됩니다. Pip 설치 안되신 분들은 아래 주소 참조해서 설치하면 됩니다. 요즘은 윈도우에서 파이썬을 설치하면 pip 도 자동으로 설치가 되더군요. 

 

http://iamaman.tistory.com/997

http://iamaman.tistory.com/984

 

그리고 만들어진 dot source code 를 실행 하기 위해서는 당연히 GraphViz 가 설치되어 있어야 합니다. GraphViz 는 아래 주소에서 설치 가능 합니다.

 

http://www.graphviz.org/Download.php

 

GraphViz 는 윈도우 64 비트의 경우 보통 아래 폴더에 설치가 되고~ 아래 폴더를 환경변수의 Path 에 추가하여 시스템 어디에서나 dot.exe를 실행 할 수 있도록 합니다. 포터블 버전을 다운로드 받아서 사용 중이시라면 해당 bin 폴더를 path 에 추가하면 됩니다.

 

C:\Program Files (x86)\Graphviz2.38\bin

 

위 GraphViz 모듈 주소의 예제를 약간 수정하여 스크립트를 하나 만들어 봤습니다.

 

위 코드를 실행하면~ 아래 그림과 같이 커맨드 창에 해당GraphViz 스크립트가 나오고~

 

 

아래 그림과 같이 다이어그램이 보여 집니다. 해당 그래프 및 GraphViz 스크립트는 해당 작업 폴더의 test-output 폴더 안에 저장이 됩니다.

 

 

다음으로 위 그림에서 언더라인이 있는 Sir Bedevere the Wise 을 클릭하면 제 블로그인 http://iamaman.tistory.com/ 가 뜨는 것을 확인 할 수 있습니다.

 

그 외 참조 주소:

GraphViz Node Shapes: http://www.graphviz.org/doc/info/shapes.html

Target 값들에 대한 설명: http://stackoverflow.com/questions/7008355/how-to-make-links-in-an-embedded-svg-file-open-in-the-main-window-not-in-a-sepa


스크립트를 사용하여 그래프를 그리는 프로그램으로 GraphViz 라는 툴이 있습니다.

 

보통 Doxygen 과 같은 툴을 사용해 보면 대부분 아시리라 생각됩니다.

 

뭐 정말 복잡한 다이어그램들은 사실 사람이 일일이 하나하나 그리는 것도 힘든 게 사실이라 GraphViz 와 같은 다이어그램 툴들을 사용하는 게 좋다고 생각됩니다.

 

아래 GraphViz Gallery 에 가보면 GraphViz 로 그릴 수 있는 다양한 그래프 형태에 대해 확인해 볼 수 있습니다.

http://www.graphviz.org/Gallery.php

 

아무튼 이렇게 그려진 그림들을 VISIO 의 형태로 불러와서 편집하고 싶은 경우가 있습니다.

 

이런 경우에 아래 주소의 graphvizio 를 사용하면 굉장히 쉽게 GraphViz 로 그린 그래프들을 불러 올 수 있습니다.

http://www.calvert.ch/graphvizio/

 

아래 그림과 같이 graphvizio.zip 파일을 다운로드 받고 압축을 해제 합니다.

 

 

다음으로 압축 해제한 폴더에 들어가서 setup.exe 파일을 실행해서 graphvizio 를 설치 합니다. 설치 과정은 그냥 다음 다음 하면 되니 설명 드리지 않습니다.

 

Graphvizio 가 정상적으로 동작하기 위해서는 GraphViz, Visio 2003 이상, Microsoft .Net Framework 3.5 가 설치되어 있어야 합니다.

 

위 gallery 에서 소개된 그래프들 중에 아래 주소의 crazy 라는 제목의 그래프를 하나 Visio 에서 그려보죠. 아래 주소에서 그림을 클릭하면 GraphViz 스크립트가 나오고 다른 이름으로 저장해서 사용하면 됩니다. 저는 crazy.gv라는 이름으로 저장해서 사용합니다.

 

http://www.graphviz.org/content/crazy

 

먼저 Visio 를 실행합니다. Graphvizio 를 설치 했다면 아래 그림과 같이 추가기능이라는 탭이 표시가 되고 Graph 라는 메뉴가 나옵니다.

 

Visio 에서 아래 그림과 같이 Diagram → import GraphViz 라는 메뉴를 선택하고 위에서 다운로드 받은 crazy.gv 파일을 선택합니다.

 

 

다음으로 조금만 기다리면 아래 그림과 같이 crazy.gv 라는 그래프가 Visio 에 옮겨지는 것을 확인 할 수 있습니다.



+ Recent posts