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

  CREATED BY JENKINSBOT

本文主要内容:
1)对Graphviz的使用方法进行简介
2)如何使用Graphviz进行绘图
3)常用的图形控制

使用示例

Graphviz (dot) examples

Node
Node Shapes

Layout
About / Graph Visualization / Layout

Graphviz / Gallery
https://graphviz.org/gallery/
https://graphviz.gitlab.io/gallery/

使用 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图的内容如下:

常用设置

填充背景(Node):why doesn’t fillcolor work with graphviz? – Stack Overflow

nodeEdge0 [fixedsize=true,shape=diamond,label=".Nojjjj label.",fillcolor=red, style=filled]

调整字体大小(Node):doxygen – how to change default font size for graphviz? – Stack Overflow

strict digraph {
	graph [ bgcolor=lightgray, resolution=128, fontname=Arial, fontcolor=blue, fontsize=12 ];
	node [ fontname=Arial, fontcolor=blue, fontsize=11];
	edge [ fontname=Helvetica, fontcolor=red, fontsize=10 ];
}

参考文献

CSDN/graphviz简介