graphviz简介

原创 2010年09月04日 11:23:00

前几天去杨瑞那儿玩,他向我介绍了一个叫graphviz的工具,回来之后试用了一下,觉得真的是很好很强大。下面简单的介绍一下这个工具。

 

graphviz是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在“所思即所得"(WYTIWYG,what you think is what you get),这是和office的“所见即所得“(WYSIWYG,what you see is what you get)完全不同的一种方式。它的输入是一个用dot语言 编写的绘图脚本,通过对输入脚本的解析,分析出其中的点,边以及子图,然后根据属性进行绘制。用graphviz来绘图的时候,你的主要工作就是编写dot脚本,你只要关注图中各个点之间的关系就好了,你不需要考虑如何安排各个节点的位置,怎样布局能够使你所绘制的图看起来更美观一些。呵呵,这也许就是”所思即所得“的魅力吧。

 

下面可以看看来自官方文档的一些例子。

$ cat 1.dot

digraph G {
    main -> parse -> execute;
    main -> init;
    main -> cleanup;
    execute -> make_string;
    execute -> printf
        init -> make_string;
    main -> printf;
    execute -> compare;
}

$ dot -Tgif 1.dot -o 1.gif

效果如下图:

 

$ cat 2.dot

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

$ dot -Tgif 2.dot -o 2.gif

效果如下图:

 

$ cat 3.dot

digraph g {
    node [shape = record,height=.1];
    node0[label = "<f0> |<f1> G|<f2> "];
    node1[label = "<f0> |<f1> E|<f2> "];
    node2[label = "<f0> |<f1> B|<f2> "];
    node3[label = "<f0> |<f1> F|<f2> "];
    node4[label = "<f0> |<f1> R|<f2> "];
    node5[label = "<f0> |<f1> H|<f2> "];
    node6[label = "<f0> |<f1> Y|<f2> "];
    node7[label = "<f0> |<f1> A|<f2> "];
    node8[label = "<f0> |<f1> C|<f2> "];
    "node0":f2 -> "node4":f1;
    "node0":f0 -> "node1":f1;
    "node1":f0 -> "node2":f1;
    "node1":f2 -> "node3":f1;
    "node2":f2 -> "node8":f1;
    "node2":f0 -> "node7":f1;
    "node4":f2 -> "node6":f1;
    "node4":f0 -> "node5":f1;
}
$ dot -Tgif 3.dot -o 3.gif

效果如下图:

 

再看一个稍微丰富一点吧

$ cat 4.dot

digraph G {
    node [peripheries=2 style=filled color="#eecc80"]
    edge [color="sienna" fontcolor="green"]
    main -> parse -> execute;
    main -> init [arrowhead = box];
    main -> cleanupi -> main;
    make_string[label = once shape=parallelogram style=filled ]
    execute -> make_string[label=go style=dashed arrowtail=diamond];
    execute -> printf [shape=box];
    init -> make_string;
    main -> printf[dir=none];
    execute -> compare[dir=both];
}
$ dot -Tgif 4.dot -o 4.gif

效果如下图:

 

呵呵,效果还不错吧。改天抽个时间再写个简单的教程。

 

Graphviz -图形可视化,python实现

系统自己的系统是 Mac OSX EI Capitan python版本是 python3.5 64bit在Graphviz 官网查看到的mac os 的版本比较旧,没找到当前系统的版本。据其介绍...
  • a1368783069
  • a1368783069
  • 2016年07月29日 18:15
  • 8205

Graphviz工具

工欲善其事,必先利其器。
  • shenxin870409
  • shenxin870409
  • 2014年11月16日 11:31
  • 1745

Graphviz绘图的安装与使用

1.windows版下载地址:点击下载zip压缩包即可 http://www.graphviz.org/Download_windows.php 2.下载之后解压并选择解压目录 3.配置环境变量...
  • FrankAx
  • FrankAx
  • 2017年08月10日 10:26
  • 760

windows下Graphviz安装及入门教程

发现好的工具,如同发现新大陆。有时,我们会好奇,论文中、各种专业的书中那么形象的插图是如何做出来的,无一例外不是对绘图工具的熟练使用。...
  • lanchunhui
  • lanchunhui
  • 2015年10月28日 18:33
  • 27036

将sklearn生成的决策树进行图形化展示

1,工具和平台: python2.7 windows 2,决策树的可视化展示据我所知有两种途径:一是将生成的结果导出为pmml文件,工具包为sklearn2pmml等,具体可见https://gi...
  • u010736419
  • u010736419
  • 2017年06月22日 11:42
  • 3307

Dot 与 GraphViz 经验总结

reference d3.js gallery: 仅仅是作个比较,d3的图确实好看一点 dot graphviz gallery: 其实也还不错 graphviz documence: 不同于官方文档...
  • u010598445
  • u010598445
  • 2016年08月16日 22:30
  • 4174

graphviz安装及使用

Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具,它提供了“所想即所得”的理念,通过dot语言来编写脚本并绘制图形,简单易懂。 graphviz安装:          grap...
  • tankles
  • tankles
  • 2011年11月16日 09:47
  • 19229

使用graphviz绘制二叉树

Graphviz是开源免费跨平台图形绘制工具,使用其提供的dot语法,可以很方便的用来绘制“图”结构(这里的图可以理解为是数学上或者计算机科学中所说的图),并支持多种格式输出。语法首先,来简单看一下d...
  • T_27080901
  • T_27080901
  • 2017年05月12日 15:23
  • 1037

Graphviz的使用及中文乱码问题

缘起 在Linux下的绘图软件,自动的,半自动的,最后遇到神器Graphviz。整个流程还算波折,起初,编译docbook的部分遇到这个软件,后来,在看Korat: Automated Testin...
  • xiajian2010
  • xiajian2010
  • 2014年04月15日 12:07
  • 12916

Graphviz 中文教程

什么是 GraphvizGraphviz 是一款开源的图表可视化软件。图表可视化指的是用图形的方式去表示抽象图表和网络的结构化信息。在网络、生物信息学、软件工程、数据库和 Web 设计、机器学习、可视...
  • bluebird_shao
  • bluebird_shao
  • 2017年03月31日 10:07
  • 1030
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:graphviz简介
举报原因:
原因补充:

(最多只允许输入30个字)