tech.cap

我在一望无际的路上

用Graphviz来画图 1

      做了一个系统,通过配置来完成一些简单或者复杂的产品逻辑, 系统投入使用以后, 产品人员在上面配置了不少产品,产品的流程都是存放在一个xml里面,前几天突然有个想法, 打算把这个流程通过图形表示出来, 于是打开google,上网查找java画图的工具,找来找去,没有看到什么好用的免费库,商业的又觉得破解太麻烦,于是无意中找到Graphviz,初步使用以后,发现这个工具真的是很强大。除了不能用java直接操作以外,画各种流程图,网络图,简直是异常简单,而且画图的效果也很好。

      Graphviz的主页在http://www.graphviz.org/ , 他是AT&T Labs-Research开发的图形绘制工具,  他可以很方便的用来绘制结构化的图形网络,支持多种格式输出, 生成图片的质量和速度都不错

      Graphviz本身是开源的产品,下载可以到 这里 ,以及他的演示界面   Graphviz在windows上和Linux上都可以顺利运行

      安装好Graphviz以后, Graphviz的默认命令会自动添加到命令行走, 使用它很简单,我们需要写一个dot文件, 格式如下

/*注释的格式, 很熟悉吧*/

/*digraph 表示一个有向图 */
    digraph G {

    
"A"->"B"
        }

把上面的内容保存为test.dot以后,在命令行下通过"dot test.dot  -Tpng -o result.png" 就会在当前目录生成test.png,,非常方便
t_cap.png
具体的dot格式可以查阅系统的pdf文档,  我可以给出一个复杂一点的小例子和windows下面中文解决办法

digraph G {

        graph [
         ratio
="auto"
         label
="hello ,我的测试" 
         labelloc
=t
            fontname
="simyou.ttf"
        ];
     node  [
      shape
="box",
      style
="dotted",
      fontname
="simyou.ttf",
      fontsize
="10"
     ];
     edge  [ fontname
="simyou.ttf"];

        
"张三"
        [
         peripheries
=2,
         style
=filled,
         label
="市民张三"
         color
="#eecc80"
     ];
 
"李四"[
  style
=filled,
         label
="农民李四"
         color
="#eecc80"
 ];
 
"王五"[
  style
=filled,
         label
="农民王五"
         color
="#eecc80"
 ];
        
"张三"->"李四"[label="亲戚"];
 
"张三"->"王五"[label="朋友"];
 
"李四"->"王五"[label="不认识"];
  
}

在windows下面 ,把文件保存为utf-8格式,然后在文件中设置  fontname="simyou.ttf"(也可以通过命令行参数-E -N -G fontname="xx" 设置),在我的简体中文windowsxp中生成的图片是可以正常显示中文的。
o_cap.jpg

通过java来调用Graphviz的方法,代码如下

记得通过通过freemarker来生成dot脚本以后,必须要在本地保存为utf-8,然后用dot去处理, 直接通过管道传String的方法是不行的。我试过多种编码,全部都失败了,另外就是simyou.ttf是字体文件的名字,可以到你的windows\fonts\目录下面找到他们的列表

posted on 2005-07-17 23:57 tech.cap 阅读(7241) 评论(35)  编辑  收藏 所属分类: java

Feedback

# re: 用Graphviz来画图 1 2005-08-02 15:20 一丝清风

很好  回复  更多评论   

# re: 用Graphviz来画图 1 2005-11-28 10:33 让变化成为计划的一部分

nice!  回复  更多评论   

# re: 用Graphviz来画图 1 2006-03-16 11:26 sohu98

我是偶然间发现Graphviz这个项目的,感觉应该就是AT&T的牛人自己没事搞起来的小玩意。不仅对这些搞Research的家伙肃然起敬,这才叫“计算机科学与技术”!
谢谢你的blog他让我对Graphviz有了一个初步的认识:)  回复  更多评论   

# re: 用Graphviz来画图 1 2006-03-17 11:18 Zoom.Quiet

http://wiki.woodpecker.org.cn/moin/GraphViz
很早在啄木鸟社区就有分享了,
http://wiki.woodpecker.org.cn/moin/ZoomQuiet 我还使用之图示了一下子自个儿的知识体系,嗬嗬,很好用的说
  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-07 20:39 比较看见

可靠可靠可靠可靠可靠不锦囊妙计汗津津艰苦们  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-07 20:39 比较看见

可靠可靠可靠可靠可靠不锦囊妙计汗津津艰苦们  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-07 20:39 比较看见

可靠可靠可靠可靠可靠不锦囊妙计汗津津艰苦们  回复  更多评论   

# 我的家 2006-10-19 06:14 杨洋

th hhtejh4  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-22 17:25 煩______づの

dsduishdsu 574711+7787dksdlusj  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-22 17:25 煩______づの

kjaydjhsuahd 123153154 uiisgd 3454 747 gdiusahud dyi8sadisa7  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-22 17:26 煩______づの

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-25 16:36 liuwenbin

ddd  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-25 16:37 liuwenbin

wqee  回复  更多评论   

# re: 用Graphviz来画图 1 2006-10-26 19:28 tangyinguo

# re: 用Graphviz来画图 1 2006-10-25 16:37 liuwenbin   回复  更多评论   

# 好东西 2006-12-13 13:59 abcdefg


在 doxygen中已经使用它了。  回复  更多评论   

# re: 用Graphviz来画图 1 2007-02-20 14:10 fdgfd

fdgsdfgsdfgsdfgsfdg  回复  更多评论   

# re: 用Graphviz来画图 1 2007-02-28 03:24 123456

155454464465  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-10 19:20 1111

立刻古   回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-14 16:47 jiang

jiangyouliang  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-14 16:48 jiang

jiang  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-14 16:49 jiang

dfsgadfghsghsrthdtrhdtyjfhyjfyujyujyujyjftyjhyjhjhjghjjtyrtyury  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-17 21:53 wc

ih   回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-18 20:09 帅BI康

按时大苏打   回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-22 19:48 li

画图系统的安装的网址在那里  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-22 21:02 qinchenguang


不错的
  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-22 21:02 qinchenguang

真的很不错
  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-24 21:29 fg

fg  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-26 19:43 y

1  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-26 19:43 y

A  回复  更多评论   

# re: 用Graphviz来画图 1 2007-03-28 02:08 salfdj

fdsnhfdsfnds
  回复  更多评论   

# re: 用Graphviz来画图 1 2007-05-23 11:22 uiku

@fdgfd

  回复  更多评论   

# re: 用Graphviz来画图 1 2007-05-23 15:31 福气

好美  回复  更多评论   

# re: 用Graphviz来画图 1 2008-07-17 10:53 SunofMay

是好东东,但是unix版本确实源码安装的,确实个麻烦的事情,不知为何没有做成产品呢?  回复  更多评论   

# re: 用Graphviz来画图 1 2008-11-04 17:09 亚克力

试试,也许可行。  回复  更多评论   

# re: 用Graphviz来画图 1 2008-11-04 23:23 xud

似乎中文的方法不再管用了...总是提示找不到字体或是错误的编码  回复  更多评论   



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-07-20 23:03 编辑过
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航: