OIer好帮手:graphviz功能演示
icon2 Program Impossible | icon4 2007-03-20 3:35| icon33 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.com


    原来我经常在想,要是有软件能帮我把图论题的数据画出来就好了。后来我想到一个制作这种软件的方法,就是把所有的点的位置设定为圆周上的等分点,这样可以最大限度的保证图象不致于太乱。我没想到居然有程序可以智能地决定哪个点、哪条边放在哪里更好看。
    我在OIBH的这个帖子里找到了这个好东西,它可以帮助OIer将大规模的图论题数据转化为图便于观察。今天我又用到了几次,突然想到把它介绍在我的Blog上。
    graphviz的主页设在http://www.graphviz.org,你可以在这里下载到最新的Windows版本,目前最新版本的安装程序为graphviz-2.12.exe。安装后你可以在dos下(任何目录中)调用它的命令行模式。
    这里,我们使用dot语言。官方网站上有关于dot语言的详细的用户手册,这里我只把常用的一些功能做一下演示。你可以在这篇日志的三个截图中掌握足够的知识来应用graphviz。
    先说明一下最顶上的Hello World程序。dot是程序名,参数-Tgif表示以gif格式输出,参数-O表示输出文件的方式设为默认(在当前目录下输出名为noname的文件,其后缀名与参数-T???所设定的类型相同)。下面一行输入的是graphviz所用的dot语言,digraph G表示有向图,花括号里描述图的内容。这样就生成了一个最简单的图。

    下面一个例子说明了如何输出一个边上有权值的无向图。这是OIer经常要用的东西。size=4,4指定了图的大小,单位为英寸。如果没有这一句的话,默认的图要大得多。你可以另外写一个程序把你的数据按图中的格式转化为dot代码。虽然graphviz可以从外部文件中读入这段代码,但我觉得粘贴进dos窗口更方便一些。

        

    下面这个例子包含更多的参数,展示了graphviz更多的功能。输出为ps文件更好看一些,因为输出ps文件可以反锯齿(应该是矢量的)。

3 条回复

  • 楼层: 沙发 | | theem_lody 说:

    沙发
    不容易

  • 楼层: 板凳 | | Matrix67: My Blog » Blog Archive » Ubigraph:强大而易用的图论动画生成软件 说:

    [...]     Ubigraph是一个全新的图论动画生成软件,利用它你可以快速生成图论模型的图形和动画,直观地展示出各种图论模型的三维结构,演示各种图论算法的过程,非常适合用于研究和教学。之前本Blog曾经介绍过一个类似的软件graphviz,但这里提到的Ubigraph显然更强大一些。上面的动画就是由Ubigraph生成的二叉查找树演示动画(高清版here),看上去相当的酷。值得一提的是,Ubigraph也是相当易用的。graphviz有它自己的语法规则,而Ubigraph则直接支持Python, Ruby, PHP, Java, C, C++等几乎所有主流语言,因此不管你原先使用的是什么语言,你都可以很快的融入到Ubigraph来。例如,在C语言中包含一个头文件,你便可以和像往常一样用循环语句“画”一个环。 [...]

  • 楼层: 地毯 | | 葉鵼菻 说:

    谢谢分享~~刚好学完图和树~~~~~

您也随便说几句吧:

请注意:如果您是第一次在本站发表评论,您的评论需要通过管理员的审核。

您可以在Gravatar设置您的头像。