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. 在線繪圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章