Graphviz dot 笔记

Dot 生成图的默认命令

dot -T<type> -o <outfile> <infile.dot>

dot 可以替换为circo等其他算法,详细见命令的选择章节。

输入文件是 ,生成的格式由 指定,生成的文件是 。其中 -T 包括:

-Tps (PostScript)
-Tsvg -Tsvgz (Structured Vector Graphics)
-Tfig (XFIG  graphics)
-Tmif  (FrameMaker graphics)
-Thpgl (HP pen plotters)
-Tpcl (Laserjet printers)
-Tpng -Tgif (bitmap graphics)
-Tdia (GTK+ based diagrams)
-Timap (imagemap files for httpd servers for each node or edge  that  has a non-null "href" attribute.)
-Tcmapx (client-side imagemap for use in html and xhtml)

rank

rank 约束了子图的节点位置,有向图中,一个箭头的指向,带有级别,一般是尾端高于尖端,即 a->b a 的级别要高于 b 的级别。

same : 所有节点在同一级别的节点处

min : 所有节点在最小级别节点处

source : 所有节点在最低级别,且只有子图属性为 source 或者 min 的时候,才能使用同样的级别

max : 类似于 source

sink : 类似于 source

NOTE: 最低级别,可以是 最上最下最左最右

rankdir

  • TB : top-to-bottom
  • LR : left-to-right
  • BT : bottom-to-top
  • RL : right-to-left

dot 线条

splines = ortho #直角拆线
splines = spline #曲线(不遮挡)
splines = cuvved #曲线(可遮挡)
splines = line #直线(可遮挡)
splines = polyline #直线(不遮挡)

命令的选择

| 命令 | 介绍 | |-------|----------------------------------| | dot | 渲染图具有明确的方向性 | | neato | 图缺乏方向性 | | twopi | 图采用放射性布局 | | circo | 图采用环形布局 | | fdp | 图缺乏方向性 | | sfdp | 用来渲染大型图,且图片缺乏方向性 |

静默执行代码

(setq org-confirm-babel-evaluate nil) ;;执行静默语句块

dot 实例

  • 绘制流程图:
    digraph structs {
        node[shape=record]
        struct1 [label="<f0> left|<f1> mid\ dle|<f2> right"];
        struct2 [label="{<f0> one|<f1> two\n\n\n}" shape=Mrecord];
        struct3 [label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"];
        struct1:f1 -> struct2:f0;
        struct1:f0 -> struct3:f1;
    }
    

digraph g {
size="8,6"
ratio=expand
edge [dir=both]
plcnet [shape=box, label="plc network"]
subgraph cluster_wrapline {
  label="wrapline control system"
  color=purple
  subgraph {
  rank=same
  exec
  sharedmem [style=filled, fillcolor=lightgrey, shape=box]
  }
  edge[style=dotted, dir=none]
  exec -> opserver
  exec -> db
  plc -> exec
  edge [style=line, dir=both]
  exec -> sharedmem
  sharedmem -> db
  plc -> sharedmem
  sharedmem -> opserver
}
plcnet -> plc [constraint=false]
millwide [shape=box, label="millwide system"]
db -> millwide
subgraph cluster_opclients {
  color=blue
  label="operator client"
  rankdir=lr
  labelloc=b
  node[label=client]
  opserver -> client1
  opserver -> client2
  opserver -> client3
}
}

  digraph G {
  rankdir=LR
  node [shape=plaintext]
  a [
  label=<
  <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
  <TR><TD ROWSPAN="3" BGCOLOR="yellow">class</TD></TR>
  <TR><TD PORT="here" BGCOLOR="lightblue">qualifier</TD></TR>
  </TABLE>>
  ]
  b [shape=ellipse style=filled
  label=<
  <TABLE BGCOLOR="bisque">
  <TR><TD COLSPAN="3">elephant</TD>
  <TD ROWSPAN="2" BGCOLOR="chartreuse"
  VALIGN="bottom" ALIGN="right">two</TD> </TR>
  <TR><TD COLSPAN="2" ROWSPAN="2">
  <TABLE BGCOLOR="grey">
  <TR> <TD>corn</TD> </TR>
  <TR> <TD BGCOLOR="yellow">c</TD> </TR>
  <TR> <TD>f</TD> </TR>
  </TABLE> </TD>
  <TD BGCOLOR="white">penguin</TD>
  </TR>
  <TR> <TD COLSPAN="2" BORDER="4" ALIGN="right" PORT="there">4</TD> </TR>
  </TABLE>>
  ]
  c [
  label=<long line 1<BR/>line 2<BR ALIGN="LEFT"/>line 3<BR ALIGN="RIGHT"/>>
  ]
  subgraph { rank=same b c }
  a:here -> b:there [dir=both arrowtail = diamond]
  c -> b
  d [shape=triangle]
  d -> c [label=<
  <TABLE>
  <TR><TD BGCOLOR="red" WIDTH="10"> </TD>
  <TD>Edge labels<BR/>also</TD>
  <TD BGCOLOR="blue" WIDTH="10"> </TD>
  </TR>
  </TABLE>>
  ]
  }

Author
Tags
总结(3) Emacs(2) org mode(4) 年度清单(2) 读书清单(2) 电影清单(2) 电视清单(2) Python(3) 学习计划(1) 子弹笔记(1) 手帐体系(1) 时间管理(1) 时间使用效率(1) 形意拳(1) 知识管理(1) 简历(1) 技能水平(1) 生活(1) 减法生活(1) 阅读(1) 阅读分组(1) org(1) docx(1) markdown(2) cmder(1) 图床(1) jsdelivr(1) github(1) 安卓系统(1) 手动更新手机系统(1) post link(1) post path(1) hexo(2) hugo(2) GitHub Pages(1) travis(1) 自动部署博客(1) presentation(1) gcc(1) g++(1) 默认表格(1) 复杂表格(1) multimd table(1) google adsense(1) evil(1) surround(1) librime(2) emacs-rime(1) liberime(1) dot(1) graphviz(1) use-sub-superscripts(1) ditaa(1) Evil Multiple cursors(1) turn evil mode off(1) modifier keys(1) keymap(1) super(1) hyper(1) install Emacs(1) Mac OS(1) keybinds(1) clocktable(1) coding system(1) image library(1) keybind(1) spacemacs(1) org babel(1) homebrew(1) dd(1) diskutil(1) tmux(1) xcode(1) xcrun(1) node-gyp(1) tar(1) tree(1) pacman(1) plantuml(1) find(1) grep(2) du(1) apt-get(1) apt(1) regex(1) wildcard(1) zsh(1) gdb(1) lsof(1) netstat(1) rebase(2) workflow(1) 工作流(1) .gitignore(1) postbuffer(1) hung up(1) merge(1) cache(1) reset(1) Git(1) command(1) submodule(1) GitHub Pull Request(1) pr(1) Matplotlib(1) beautifusoup(1) 下载小说(1) SOLID(1) Leetcode(2) 透视表(1) read_excel()(1) pandas(1) conda(1) django(1) markdown-deux(1) mysql(1) oracle(1) 模糊查询(1) logging level(1) reflex(1) Field(1) Maven(1) Selenium(1) 下拉框(1) select into(1) insert into select(1) CAST(1) CONVERT(1) timestamp(1) concat(1) concat_ws(1) group_concat(1) union(1) grant privileges(1) 重置 root 密码(1) 报错 10060(1) 清理连接数(1) create user(1) set password(1) exists(1) in(1) markdown-it(1) emoji(1) tasks(1) valine(1) Code 504(1) Hugo(1) theme(1) substring(1) indexOf(1) RegExp(1) 定位节点(1) 正则匹配(1) async(1) 异步请求(1) css(2) layui(1) 滚动条(1) JavaScript(1)