Grahpviz – Basics

Graphviz是用来画无环的有向图和无向图的,方法是:我们先用Graphviz特定语法描述这幅图,存为一个文本文件,然后利用Graphviz提供的dot程序将其转化为特定格式的图片,也可以直接用dot格式浏览器直接打开文本文件观看。

文本相对于二进制文件有很多好处,比如可以版本控制。一个经典游戏是找出两幅图中的不同之处。然而,如果这两幅图是由文本文件描述的,我们就可以使用diff程序来发现不同,这样观察不同版本之间的变化就非常容易。另一个好处是可以把自己程序里的数据结构(自动或手动)输入成dot文件,然后可视化其复杂关系。

前面一个例子很复杂,当然也展示了Graphviz的威力。这里展示两个简单的小例子,其文法简单明了,也无需我多做解释。第一个例子展示了编译器的工作:

相应的dot文件内容为:

digraph G {
    source_file -> compiler -> assembly_file;

    source_file [label="hello.c", shape=box];
    compiler [label="gcc"];
    assembly_file [label="hello.s", shape=box];
}

第二个例子类似doxygen生成类层次图的方式:

相应的dot文件内容为:

digraph G {
    shape -> circle [dir=back];
    shape -> rectangle [dir=back];
}

3 thoughts on “Grahpviz – Basics

  1. H.J.LeoChen says:

    好东西。找类似的东西很久了。

    用各种办法尝试过,SVG,VISIO二次开发等等甚至自己写一个简单的根据数据画图的东西。最终都不是很满意。

    有了这东西,再用perl写几个小脚本,来生成代码,我想要的很多功能都能实现了。

    谢谢分享。

回复 h.j.leochen 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据