##language:zh ''' 所想即所得 才是真正的快乐! ''' -- Zoom.Quiet [<>] <> = 一句话介绍 = ||{{http://www.graphviz.org/gvicons/doc-about.png}}||'''[[http://www.graphviz.org/About.php|GraphViz]] 是AT&T 贡献的跨平台图形生成工具!'''<
>通过 The DOT Language 一种脚本语言来定义图元的关系进行自动绘制''|| * '''[[GraphVizForMoin|在维基中直接使用 Graphviz]]''' = 快速开始 = == 安装 == * 不用说了!几乎是绿色软件了! * M$平台中解压缩就好, * 而且自动加了系统路径 == 使用 == * 嗯嗯!最愉快的经历!运行快!语法简练!听话! * 关键是脚本语言的行为哪!你可以随时输出图形结果来预览成果! === 编写dot脚本 === * 没有什么可说的,帮助文件比较玄!syntax 好复杂的样子! * 但是看例子实在就简单了! {{{ /*sample.dot*/ digraph G { PY->ZO->Zope2->CMF->Plone; ZO->Zope3; ZO->Zs; Zs[label="ZODB,ZPT\n...."]; PY->XML; PY->"4Suite"->XML;PY->Elements->XML; PY[label="Python",shape=box]; ZO[label="Zope",shape=egg]; } }}} === 运行绘制 === * 以上脚本使用最基本的命令输出: {{{ > dot -Tpng sample.dot -o sample.png }}} {{attachment:sample.png}} * 嗬嗬嗬!简单明了: * '''digraph G {}''' 是脚本声明 * '''/*....*/''' 是注释形式 * '''a->b''' 关系指向 * 另外有种无方向图形,使用'''a--b''' 连接图元 * '''foo[label=...]''' 是属性定义语法,可以在末尾集中声明,也可以随时在关系说明中定义 * label 标签属性中可以使用标准的转义符来换行等等 * shape 图元形状属性,可以指点外框形式! * 有很多的选择啦……[[http://www.research.att.com/%7Eerg/graphviz/info/shapes.html|结点形状]] * [[http://www.research.att.com/%7Eerg/graphviz/info/arrows.html|箭头形状]] * [[http://www.research.att.com/%7Eerg/graphviz/info/colors.html|颜色定义]],当然也可以使用RGB来声明 * [[http://www.research.att.com/%7Eerg/graphviz/info/attrs.html|全部属性定义]] * 而且通过命令行的简单变化又可以快速改变整个图形的外观 {{{ > dot -Grankdir=LR -Nshape="plaintext" -Earrowhead="odiamond" -Tpng sample.dot -o sample.png }}} {{attachment:sample0.png}} * 而各种命令行参数是与脚本的属性声明是共通的,不过是全局性的定义………… === 换行 === label的文字内容如果太长的话,可以用"\n"来换行。 === 进一步学习 === * 哇呀呀!直接支持HTML的表格定义语法!看来HTML的影响力很NB哪! {{{ digraph table { node [shape=plaintext]; struct1 [label=<
a b c d
>]; } }}} * 将输出为 * {{attachment:tab.png}} ##= 深入 = <> = 讨论 = '''有更加美好的体验的话请一定分享!''' * 不错,有机会完善之,搞一个中文化教程,可以做更复杂的图形。 * 关于脚本类引用,已经有现成的模块我以前的Blog中有介绍,[http://www.zipcon.net/~adamf/software/PyUMLGraph/ PyUMLGraph]。不过它会把所有的基类都列出来,有时会非常庞大。还有另一个不用graphviz的是[[http://www.atug.com/andypatterns/pynsource.htm|PyNSource]],可以看,可以打印,但不能保存。 -- limodou