Grapviz學習筆記
基本語法定義
語法格式說明
-
終端以粗體表示,非終端以 斜體表示
-
文本字符以 ’ ’ 單引號包裹
-
() 表明必須的組合
-
[] 表明可選的項目
-
| 表明可供選的值
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屬性表
屬性說明
- 所有屬性都是以 key=value形式
- 所有屬性名,屬性值都是大小寫敏感,除了註釋
- 無向圖不要使用有向圖的屬性
- 使用設備無關的單位:英寸,或者像素點, 一般72個像素點一英寸
- 接收C風格的字面量,例如bool類型:true,yes,非零整數, false,no,0
- 在下面表格的UsedBy列 的 E,N,G,S,C 爲 edge,node,graph,subgraph,cluster
常見屬性
- 通用屬性
href,href
: 圖像文件的引用fontcolor
:label標籤的字體顏色值- 顏色取值可能爲 “h,s,v” (hue,saturation,brightness,0~1的浮點值)
- 或者X11顏色名,red,white,green
- 或者#rrggbb
fontsize
:label標籤類型的 size (unit:n)fontname
:字體名label
- 結尾包含 \n,\l,\r,分別對應 居中, 左,右
- \G 圖像名
- \N 結點名
- \T,\H ,頭結點名,尾結點名,\E
tail_node_name->head_node_name
- graph 屬性
- size=“x,y” 單位:英寸, 最大的邊框
- ratio=f, 高寬的比例,0~1浮點值 可選值,fill,auto,compress
- layout=egine 佈局方式
- margin=f,設置外框距
- ordering=out|in
- out:以 外邊(以當前結點爲尾結點) 從左到右出現的順序 定義 結點顯示的順序
- in:以 內邊(以當前結點爲頭結點) 從左到右出現的順序 定義 結點顯示的順序
- rotate=90 ,橫屏模式,其他值不生效
- center=true,bool值 居中
- color=colorvalue 前景色
- overlap:結點間重疊發生時
- false:使用Prism算法,消除重疊
- scale:保持結點的大小,均勻放大
- true:不做重新佈局
- stylesheet=“file.css” 引用css文件,只對svg,svgz生效
- splines 線條樣式
- none|"" 無線條
- line|false 正常直線
- polyline 相交線
- curved 曲線
- ortho:正交
- spline ,true
- dot-specific 屬性, 點佈局屬性
- nodesep = f, node之間最小間隔
- ranksep = f , 各個排名之間的最小間隔
- rankdir =LR|RL|BT 繪製的順序
- rank = rankvalue ,對子圖中的結點 約束排名,取值
- min,source:子圖中的所有結點 最小的rank
- same :圖中的所有結點 相同的rank
- max,sink:子圖中的所有結點 最大的rank
- neato-specific 屬性,緊湊佈局
- mode:取值
- major: 最大程度壓縮線長
- KK:壓縮程度 梯度下降的方法
- model:取值
- 默認:最短路徑
- circuit:使用電路電阻模型計算距離
- subset:長度設置爲 相鄰結點數
- mds:最短路徑用於 沒有直接相鄰的邊
- start=val 隨機生成器,隨機擺放結點位置
- epsilon:結束條件
- mode:取值
- twopi-specific attributes :星型佈局
- root=ctr 佈局的中央結點
- ranksep = val ,指定徑向距離,默認0.75
- circo-specific attributes :環佈局
- root=nodename
- mindist=value,結點間最小距離
- fdp-specific attributes :暫不寫
- NodeAttribute
- height=d,width = d, fixedsize=true
- shape=builtin_polygon record epsf
- builtin_polygon ,內置多邊形狀
- plaintext
- ellipse
- oval
- circle
- egg
- triangle
- box
- diamond
- trapezium
- parallelogram
- house
- hexagon
- octagon
- note
- box3d
- component
- builtin_polygon ,內置多邊形狀
- color=colorvalue ,fillcolor=colorvalue
- 設置填充顏色, 如果 指定了style=filled
- 優先級: fillcolor > color
- style 結點的樣式
- filled,solid,dashed,dotted,bold,invis
- xlabel:外部標籤
- target,tooltip
- 只適用於多邊形結點
- regular= true|false , 趨近於對稱的正方形
- peripheries = n , 設置包圍的層次
- sides = n: 多邊形邊數
- orientation:設置第一個頂點的方向,從垂直方向逆時針,以度表示
- distortion:扭曲度, 頂部加寬, 底部收縮
- skew:歪斜,頂部右移,底部左移
- edge attribute
- wegiht=val ,邊的權值
- style=solid dashed dotted bold invis
- dir =forward back both none ,控制箭頭方向
- tailclip,headclip bool,斷點形狀剪裁
- arrowhead,arrowtail= none, normal, inv, dot, odot, invdot, invodot, tee, empty, inv empty, open, halfopen, diamond, odiamond, box, obox, crow ,箭頭形狀
- arrowsize=val 指定箭頭大小的乘法因子
- headlabel,taillabel=text ,頭尾標籤,labelfontcolor,labelfontname, labelfontsize 設定字體
- labeldistance and labelangle (in degrees CCW) specify the placement of head and tail labels.
- decorate:從邊和label畫一條直線
- samehead,sametail:從某個結點出發的多條線, 可以合併端點