「Graphviz」- 使用以及 DOT 语言入门

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:通过 Graphviz 绘图的快速入门,常用的图形控制,常见问题的解决办法;

解决方案

使用 Graphviz 绘制图的主要工作集中在编写 DOT 脚本文件,Graphviz 通过解析 DOT 脚本文件产生图。

下面是个简单的 DOT 脚本示例,文件名为 demo.dot:

digraph G{
	main -> demojdf -> demo;
	main -> demojasd;
	main -> demojsdf -> ifonffasdf;
	main -> demojsdfas -> demoasdfs;
}

使用 demo.dot 生成图的命令为:dot -Tjpg /tmp/demo.dot > /tmp/demo.png,执行该命令后会生成一张 GIF 图,图的内容如下:

上面是一个简单的示例,当然这只是一个极其简单的示例,只是为了稍作演示;

各个节点的样式也是可以自定义的,下面看一个稍微复杂的例子:

digraph structs {
    // 定义节点的形状,矩形
    node [shape=record];

    // 定义节点及节点的属性、样式等;
    struct1 [shape = record, label = "<f0> left|<f1> mid dle|<f2> right"];
    struct2 [shape = record, label = "<f0> First|<f1> Second"];
    struct3 [shape = record, label = "Hello\nWorld |{ b |{<f0> c|<d3> d|e}| f}| g | h"];

    // 定义节点之间的关系;
    struct1:f0 -> struct2;
    struct1:f2 -> struct3:d3;
    struct1 -> struct3:f0;
}

依旧执行图生成命令:

dot -TPNG /tmp/demo.dot > /tmp/demo.png

执行该命令后生成的 PNG 图的内容如下:

常见使用示例

Graphviz (dot) examples

参考文献

CSDN/graphviz 简介