学习graphviz小结.doc_第1页
学习graphviz小结.doc_第2页
学习graphviz小结.doc_第3页
学习graphviz小结.doc_第4页
学习graphviz小结.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习graphviz小结到现在为止,我接触graphviz已经有几个月的时间了,所学到的知识和一些心得体会现介绍如下。Graphviz是一款实用的画图软件,所描述的内容为点与点通过边连接之后,多反映的它们之间的联系。用户可通过规定格式写入代码,由软件自动生成图形。要用graphviz画图,首先要明确的就是所画之图为有向图还是无向图。Digraph表示有向图,graph表示无向图。一般来说,主要是有向图,无向图也可通过设置边的属性来画出无向边。须注意的是,-表示有向图中的边,-表示无向图中的边,不能混用。使用graphviz画图,还必须掌握平面图元素点(node)和边(edge)的各种属性。初学者可以按照资料当中的例子来摸索,一点点总结汇总,慢慢就会积累起来。我先来说说点的一些属性。这里所说的点并不一定是一个点,说成是图论里的节点可能更为合适。所以graphviz中的点是有形状的。用shape来进行设置,默认参数是shape=ellipse(椭圆形),格式为:nodeshape=ellipse;(node用以设置所有点的默认参数,若想只设定某个点的属性,例如有一个点,名称为a,则格式为:ashape=ellipse;)。点的一些其他常用形状有:box(矩形),circle(圆形),record(记录型,又分为record和Mrecord两种。record和Mrecord的区别就是Mrecord的角是圆的。Record就是由衡的和竖的矩形组成的图形。),plaintext(纯文本型,无边框),invtriangle(三角形)。另外还有一种,就是多边形,即shape = polygon。当点的形状为多边形时,sides=*用于设置它的边数;peripheries=*用于设置多边形的外框的层数;regular = true可以让你的多边形是一个规则的多边形;orientation = *;可以让你的多边形旋转一个角度,如orientation = 15就是转了15度;Skew后面跟一个(-1.01.0)的小数,能让你的图形斜切一个角度;distortion(不常用)是让你的图形产生透视效果。除了上述形状外,graphviz还设置了几种不同风格的图形边框,具体如下:solid dashed dotted boldroundeddiagonalsfilledstripedwedged 点的颜色用color来设置,格式与shape相同,点的颜色直接用某种颜色的英文拼写即可设置,例如要设置点a的颜色为红色,格式为:acolor=red; 若为浅红色,用lightred即可。若想让整个点填充上这种颜色,可设置style=filled。边的颜色同样也可用这种方法来设置,具体格式后面再举例。点内的内容一般为该点由用户设定的名称,若想输出其他内容,可利用label(标注)来设置,格式为:alabel=”wo”;Graphviz的代码一般用英文字符输出,包括点的名称和点中的其他内容。若想用汉字输出,可利用fontname设置字体,中文字体的英文名字有:新細明體:PMingLiU 細明體:MingLiU標楷體:DFKai-SB 黑体:SimHei宋体:SimSun 新宋体:NSimSun仿宋:FangSong 楷体:KaiTi仿宋_GB2312:FangSong_GB2312楷体_GB2312:KaiTi_GB2312微軟正黑體:Microsoft JhengHei微软雅黑体:Microsoft YaHei此外,还可利用fontcolor,fontsize分别设置点内字的颜色、大小。我所了解的点的常用属性基本就是这样,在以后遇到问题时,我会继续总结。下面来说一下边的常用属性。图中所有边的默认属性可以用edge来设置,涉及到某条具体的边时,如a到b的边颜色为蓝色,格式为:a-bcolor=blue。边的形状主要表现在边的类型和箭头(arrowhead)的形状,边的类型有以下几种: solid dashed dotted bold不同类型的边可以用来表示不同层次的点之间的关系,也可用来表示不同层次之间的关系。箭头的形状具体有以下几种:normalinvdotinvdotodotinvodotnoneteeemptyinvemptydiamondodiamondediamondcrowboxoboxopenhalfopenvee设置格式为:a-barrowhead=box;不过这一属性并不常用,了解即可,也无需全部记忆。在有向图中,为了展示点之间的多种关系,可利用边的不同的方向。可以用dir设置每条边箭头的方向,有forward(向前,默认),back(回指),both(双向),none(无向)四种。格式为:a-bdir=both;还可用rankdir设置整个图点连接的方向(若图中所有点均有联系;否则,可大体展示整个图中所有点的分布式横向还是纵向),有BT,TB(top - bottom),LR,RL四种。默认时图中的线都是从上到下的,我们可以将其改为从左到右,在文件的最上层打入rankdir=LR即可。此外,当图中时间表之类的东西时,我们会需要几个点能排在一行(列),这时要用到rank,用花括号设rank=same,然后把需要并排的点一次输入,具体格式为:rank = same; a; b;c; 当图中的线和线label比较多时,可以给线的属性decorate = true,使得每条线的label与所属线之间连线。还可以给每条线加上headlabel(箭头标注)和taillabel(箭尾标注),给每条线的起始点和终点加上label,它们的颜色由labelfontcolor来决定,而边的标注的颜色由fontcolor来决定,字体同样由fontname来设置。设立一条边时,我们可以设置这条边从起点的哪个位置射出和从哪个位置结束。控制符有n(北), ne(东北),e(东), se(东南), s(南), sw(西南), w(西) 和 nw(西北)。具体格式为:c:n- d:slabel = “北到南”; 下面再来介绍两类比较特殊的图形。一个是表格,另一个是子图。先说表格,表格可看作是一个点中的内容,通过特殊的格式对其进行处理,使之输出成表格的形式,我们可通过一个例子来看。 digraph htmlabc shape=invtriangle, margin=0, label=helloworldbgh cdef;a shape=polygon,sides=5,peripheries=3,color=lightblue,style=filled;abc:s-a;如上为一段代码和由它生成的图形,其中abc为一个点,它的标注构成了一个表格。margin用来设置页面边距,使图形在整个显示框中位置合适。TABLE BORDER= CELLBORDER= 表示表格边框粗度。cellSpacing 属性可设置或返回在表格中的单元格之间的空白量(表格中各个单元格之间的距离。单元格(cell) - 表格的内容单元格边距(表格填充)(cellpadding) - 代表单元格外面的一个距离,用于隔开单元格与单元格空间单元格间距(表格间距)(cellspacing) - 代表表格边框与单元格补白的距离,也是单元格补白之间的距离。如下图所示:COLSPAN=3表明该单元格的宽度为单位宽度的3倍。ROWSPAN=3表明该单元格的高度为单位高度的3倍。、成对出现,表示每一行的开始与结束。、成对出现,表示每一列的开始与结束。代码的编排顺序按先行后列进行。此外,若想去掉表格外面的一层边框,只有令abc的形状为none即可。另一类特殊图形就是子图。我也举一个简单的例子来加以说明。 digraph G compound=true;subgraph cluster0a-b;c;b;c-d;subgraph cluster1e-g;f;b-flhead=cluster1;d-e;c-gltail=cluster0,lhead=cluster1;c-eltail=cluster0;d-h; 画一个子图就是subgraph cluster#,必须有cluster前缀。 当想把一条边连到一个子图的边界上,先输入compound = true,然后就能用lhead和ltail来设置连接的子图了。 以上便是我学习graphviz的总结和一些体会。通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论