UP | HOME

Graphviz笔记

Table of Contents

介绍

使用

安装

OS X

到下载页面 http://www.graphviz.org/Download_macos.php ,下载pkg安装包。我的OS X版本是10.10,没有直接对应的版本,下载了最新的graphviz-2.39。点击安装后,可以使用命令行模式,app功能似乎不全。页面上的安装说明说,可以用homebrew安装来解决app无法使用的问题,我尝试了但是安装失败,所以暂时用2.39的官方安装包。

入门

新建 hello.dot 文件,内容为:

digraph G {
  Hello->World
}

执行:

dot hello.dot -Tpng -o hello.png

在当前路径生成了png格式的图片:

hello.png

png格式不是矢量图,试试更清晰的svg:

dot hello.dot -Tsvg -o hello.svg

hello.svg

再试试pdf格式:

dot hello.dot -Tpdf -o hello.pdf

hello.pdf

稍复杂的例子

参考:

digraph G{
  size = "4, 4";                //图片大小
  main[shape=box];              /*形状*/
  main->parse;
  parse->execute;
  main->init[style = dotted];   //虚线
  main->cleanup;
  execute->{make_string; printf}//连接两个
  init->make_string;
  edge[color = red];            //连接线的颜色
  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;
}

Q 生成图片为:

main.svg

语法

  • 无向图
    graph graphname {
      1 -- 2;
      3 -- 2;
      4 -- 1;
      2 -- 5 -- 4;
    }
    

    eg1.svg

  • 有向图
    digraph graphname {
      a -> b;
      a -> c -> d;
      c -> e;
    }
    

    eg2.svg

  • 使用节点别名
    graph graphname {
      a [label="Root", shape=circle]; //节点标注Root,形状为圆形
      b [shape=box, color=red]; //节点颜色red
      a -- b -- c [color=blue]; //连接线颜色blue
      b -- d [style=dotted]; //虚线
      a -- e -- f [color=green];
      f [label="Leaf"];
    }
    

    eg3.svg

  • 使用Cluster

    Cluster名称必须以 cluster_ 开头。

    digraph cluster{
      subgraph cluster_0{
        label ="Process A";
        node[style=filled, color="lightgray"];
        a0 -> a1 -> a2 -> a3;
      }
      subgraph cluster_1 {
        label ="Process B";
        b0 -> b1 -> b2;
      }
      b1 -> a3;
      start -> a0;
      start -> b0;
      a3 -> end;
      b2 -> end;
      start [shape=Mdiamond];
      end [shape=Msquare];
    }
    

    eg4.svg

资料

代码分析

Date: 2014-12-19

Author: 马楠

Created: 2014-12-24 三 22:09

Emacs 24.3.1 (Org mode 8.2.10)

Validate