Graphviz实践

实例1:

digraph G{
    main -> parse -> execute;
    main -> init;
    main -> cleanup;
    execute -> make_string;
    execute -> printf;
    init -> make_string;
    main -> printf;
    execute -> compare;
}
../../../_images/example1.png

实例2

digraph G{
 
    size = "5, 5";//图片大小
    main[shape=box];/*形状*/
 
    main->parse;
    parse->execute;
 
    main->init[style = dotted];//虚线
 
    main->cleanup;
    edge[color = green]; // 连接线的颜色
 
    execute->{make_string; printf}//连接两个
 
    init->make_string;
    main->printf[style=bold, label="100 times"];//线的 label
 
    make_string[label = "make a\nstring"]// \n, 这个node的label,注意和上一行的区别

    node[shape = box, style = filled, color = ".7.3 1.0"];//一个node的属性
 
    execute->compare;
}
../../../_images/example2.png

实例3

digraph structs {
    node [shape=record];
    struct1 [label="<f0> left|<f1> mid&#92; dle|<f2> right"];
    struct2 [label="<f0> one|<f1> two"];
    struct3 [label="hello&#92;nworld |{ b |{c|<here> d|e}| f}| g | h"];
    struct1:f1 -> struct2:f0;
    struct1:f2 -> struct3:here;
}
../../../_images/example3.png

增加一行:

rankdir=LR
../../../_images/example3_1.png

给结点struct1增加shape: Mrecord:

struct1 [shape=Mrecord, label="<f0> left|<f1> mid&#92; dle|<f2> right"];
../../../_images/example3_2.png

实例4

digraph G {
  rankdir=LR
  node [shape=plaintext]
  a [
     label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
  <TR><TD ROWSPAN="3" BGCOLOR="yellow">class</TD></TR>
  <TR><TD PORT="here" BGCOLOR="lightblue">qualifier</TD></TR>
</TABLE>>
  ]
    b [shape=ellipse style=filled
  label=<
<TABLE BGCOLOR="bisque">
  <TR><TD COLSPAN="3">elephant</TD> 
      <TD ROWSPAN="2" BGCOLOR="chartreuse" 
          VALIGN="bottom" ALIGN="right">two</TD> </TR>
  <TR><TD COLSPAN="2" ROWSPAN="2">
        <TABLE BGCOLOR="grey">
          <TR> <TD>corn</TD> </TR> 
          <TR> <TD BGCOLOR="yellow">c</TD> </TR> 
          <TR> <TD>f</TD> </TR> 
        </TABLE> </TD>
      <TD BGCOLOR="white">penguin</TD> 
  </TR> 
  <TR> <TD COLSPAN="2" BORDER="4" ALIGN="right" PORT="there">4</TD> </TR>
</TABLE>>
  ]
  c [ 
  label=<long line 1<BR/>line 2<BR ALIGN="LEFT"/>line 3<BR ALIGN="RIGHT"/>>
  ]

  subgraph { rank=same b c }
  a:here -> b:there [dir=both arrowtail = diamond]
  c -> b
  d [shape=triangle]
  d -> c [label=<
<TABLE>
  <TR><TD BGCOLOR="red" WIDTH="10"> </TD>
      <TD>Edge labels<BR/>also</TD>
      <TD BGCOLOR="blue" WIDTH="10"> </TD>
  </TR>
</TABLE>>
  ]
 
}
../../../_images/example4.png