Grapviz学习笔记

Grapviz学习笔记

基本语法定义

语法格式说明

  1. 终端以粗体表示,非终端以 斜体表示

  2. 文本字符以 ’ ’ 单引号包裹

  3. () 表明必须的组合

  4. [] 表明可选的项目

  5. | 表明可供选的值

    graph	:	[ strict ] (graph | digraph) [ ID ] '{' stmt_list '}'
    stmt_list:[stmt';'stmt_list]
    stmt:node_stmt|edge_stmt|attr_stmt|id '=' id|subgraph
    
    attr_stmt:(graph|node|edge) attr_list
    attr_list:'[' [a_list] ']'[attr_list]
    a_list:id '=' ID[(';'|',')][a_list]
    
    edge_stmt:(node_id|subgraph) edgeRHS [attr_list]
    edgeRHS:edgeop(node_id|subgraph)[edgeRHS]
    
    node_stmt:node_id[attr_list]
    node_id:id[ port]
    port:':'ID[':' compass_pt]|':'compass_pt
    
    subgraph:[subgraph[ID]]'{' stmt_list'}'
    compass_t:(n|ne|e|se|s|sw|w|nw|c|_)
    
    node,edge,graph,diagraph,subgraph,strict都是关键字,大小写不敏感
    
    ID 命名规则
    1.字母数字下划线,不以数字开头
    2.数值型的[-]?(.[0-9]+ | [0-9]+(.[0-9]*)? );
    3.双引号包裹的
    4.HTMLstring 必须是xml格式
    
    edgeop 为 -> 或者 -- 
    
    Subgraphs and Clusters
    1.subgraph 有三个作用
    	1.代表图标结构:
    		1.指明某些结点和边应组合在一起
    		2.指定有关图形组件的语义信息
    		3.为边提供速记
    		4.可以出现在 -> -- 的左边后者右边,a->{b,c} 从a点 到b,c都会创建一条边
    	2.设置某部分结点的属性
    	3.使用 cluster subgraph 将结点绘制到一个矩形中
    
    strict
    	1.对于有向图,在给定的方向上只能有一条边
    	2.对于无向图,对于同一两个结点最多有1条边,后面的属性回复盖前面的
    
    cluster
    	1.
    	2.
    
    

命令行使用

基本语法

cmd [ flags ] [ input files ]

flags

-Gname[=value] :设置图形属性,默认true

-Nname[=value]:设置结点属性,默认true

-Ename[=value]:设置边属性,默认true

-Klayout:覆盖命令指定的布局,例如:dot -Kneato == neato.

-Tformat[:renderer[:formater]]

指定输出的格式,以及渲染器

-V:打印版本信息

-o outfile 输出文件

-O 自动命名文件

Node,Edge,Graph属性表

属性说明

  1. 所有属性都是以 key=value形式
  2. 所有属性名,属性值都是大小写敏感,除了注释
  3. 无向图不要使用有向图的属性
  4. 使用设备无关的单位:英寸,或者像素点, 一般72个像素点一英寸
  5. 接收C风格的字面量,例如bool类型:true,yes,非零整数, false,no,0
  6. 在下面表格的UsedBy列 的 E,N,G,S,C 为 edge,node,graph,subgraph,cluster

常见属性

  1. 通用属性
    1. href,href: 图像文件的引用
    2. fontcolor:label标签的字体颜色值
      1. 颜色取值可能为 “h,s,v” (hue,saturation,brightness,0~1的浮点值)
      2. 或者X11颜色名,red,white,green
      3. 或者#rrggbb
    3. fontsize:label标签类型的 size (unit:n)
    4. fontname:字体名
    5. label
      1. 结尾包含 \n,\l,\r,分别对应 居中, 左,右
      2. \G 图像名
      3. \N 结点名
      4. \T,\H ,头结点名,尾结点名,\E tail_node_name->head_node_name
  2. graph 属性
    1. size=“x,y” 单位:英寸, 最大的边框
    2. ratio=f, 高宽的比例,0~1浮点值 可选值,fill,auto,compress
    3. layout=egine 布局方式
    4. margin=f,设置外框距
    5. ordering=out|in
      1. out:以 外边(以当前结点为尾结点) 从左到右出现的顺序 定义 结点显示的顺序
      2. in:以 内边(以当前结点为头结点) 从左到右出现的顺序 定义 结点显示的顺序
    6. rotate=90 ,横屏模式,其他值不生效
    7. center=true,bool值 居中
    8. color=colorvalue 前景色
    9. overlap:结点间重叠发生时
      1. false:使用Prism算法,消除重叠
      2. scale:保持结点的大小,均匀放大
      3. true:不做重新布局
    10. stylesheet=“file.css” 引用css文件,只对svg,svgz生效
    11. splines 线条样式
      1. none|"" 无线条
      2. line|false 正常直线
      3. polyline 相交线
      4. curved 曲线
      5. ortho:正交
      6. spline ,true
  3. dot-specific 属性, 点布局属性
    1. nodesep = f, node之间最小间隔
    2. ranksep = f , 各个排名之间的最小间隔
    3. rankdir =LR|RL|BT 绘制的顺序
    4. rank = rankvalue ,对子图中的结点 约束排名,取值
      1. min,source:子图中的所有结点 最小的rank
      2. same :图中的所有结点 相同的rank
      3. max,sink:子图中的所有结点 最大的rank
  4. neato-specific 属性,紧凑布局
    1. mode:取值
      1. major: 最大程度压缩线长
      2. KK:压缩程度 梯度下降的方法
    2. model:取值
      1. 默认:最短路径
      2. circuit:使用电路电阻模型计算距离
      3. subset:长度设置为 相邻结点数
      4. mds:最短路径用于 没有直接相邻的边
    3. start=val 随机生成器,随机摆放结点位置
    4. epsilon:结束条件
  5. twopi-specific attributes :星型布局
    1. root=ctr 布局的中央结点
    2. ranksep = val ,指定径向距离,默认0.75
  6. circo-specific attributes :环布局
    1. root=nodename
    2. mindist=value,结点间最小距离
  7. fdp-specific attributes :暂不写
  8. NodeAttribute
    1. height=d,width = d, fixedsize=true
    2. shape=builtin_polygon record epsf
      1. builtin_polygon ,内置多边形状
        1. plaintext
        2. ellipse
        3. oval
        4. circle
        5. egg
        6. triangle
        7. box
        8. diamond
        9. trapezium
        10. parallelogram
        11. house
        12. hexagon
        13. octagon
        14. note
        15. box3d
        16. component
    3. color=colorvalue ,fillcolor=colorvalue
      1. 设置填充颜色, 如果 指定了style=filled
      2. 优先级: fillcolor > color
    4. style 结点的样式
      1. filled,solid,dashed,dotted,bold,invis
    5. xlabel:外部标签
    6. target,tooltip
    7. 只适用于多边形结点
      1. regular= true|false , 趋近于对称的正方形
      2. peripheries = n , 设置包围的层次
      3. sides = n: 多边形边数
      4. orientation:设置第一个顶点的方向,从垂直方向逆时针,以度表示
      5. distortion:扭曲度, 顶部加宽, 底部收缩
      6. skew:歪斜,顶部右移,底部左移
  9. edge attribute
    1. wegiht=val ,边的权值
    2. style=solid dashed dotted bold invis
    3. dir =forward back both none ,控制箭头方向
    4. tailclip,headclip bool,断点形状剪裁
    5. arrowhead,arrowtail= none, normal, inv, dot, odot, invdot, invodot, tee, empty, inv empty, open, halfopen, diamond, odiamond, box, obox, crow ,箭头形状
    6. arrowsize=val 指定箭头大小的乘法因子
    7. headlabel,taillabel=text ,头尾标签,labelfontcolor,labelfontname, labelfontsize 设定字体
    8. labeldistance and labelangle (in degrees CCW) specify the placement of head and tail labels.
    9. decorate:从边和label画一条直线
    10. samehead,sametail:从某个结点出发的多条线, 可以合并端点

相关网站

  1. 官方网站
  2. 在线绘图
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章