dot

graphviz 라는 그래프 시각화 소프트웨어에 포함된 패키지 중의 하나이다. 방향성 그래프를 계층구조로 나타내어 그려준다. 내가 생각하는 가장 큰 특징이자 장점으로는, DOT 언어로 기술하면 그림파일 형태로 그래프를 출력할 수 있기 때문에 git으로 작성한 Dot 문서의 버전을 관리를 할 수 있다는 것이다.

참고로 graphviz에는 dot말고도 다른 레이아웃을 가지는 도구를 몇 가지 제공한다. Image

만들어 낼 수 있는 그래픽 포맷으로는 GIF, PNG, SVG, PDF, PostScript를 지원한다.

layout procedures는 비선형 그래프를 전제한다.

  1. input graph에서 cycle을 제거한다 - cyclic edge의 internal direction을 reversing
  2. nodes에 ranks or levels을 할당 - top-to-bottom에서 rank는 Y 설정를 나타냄
  3. ranks 내에 nodes의 순서를 정해서 crossing을 예방
  4. edges를 짧게 유지하기 위해 nodes의 X 좌표를 설정 final step routes edge splines.

DOT language 3 종류의 Objects

  • graphs
  • nodes
  • edges

main (Outer-most) graph

  • directed (digraph) or undirected (graph) subgraph
  • defines a subset of nodes and edges

A node is created when its name first appears in the file An edge is created when nodes are joined by the edge operator ->

Running dot on this file

$ dot -Tpng graph1.gv -o graph1.png

It is often useful to adjust the representation or placement of nodes and edges in the layout.

  • This is done by setting attributes of nodes, edges, or subgraphs in the input file.
  • Attributes are name-value pairs of character strings. Figures 3 and 4 illustrate some layout attributes.
digraph G {
     main -> parse -> execute;
     main -> init;
     main -> cleanup;
     execute -> make_string;
     execute -> printf
     init -> make_string;
     main -> printf;
     execute -> compare;
}

4페이지까지 봄, 더 정리 필요

참고자료