Graph::Easy 是一个处理图形DSL的Perl模块,它有如下功能:
- 提供了一种易懂,可读性很强的图形描述语言
- 一种支持 ASCII Art 的基于网格的布局器
- 可以导出为 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。
- 可以从 Graphviz, VCG 和 GDL 导入图像。
1. graph-easy 安装
1.1 安装perl
1 | # yum install perl |
1.2 安装Graph::Easy
1 | # perl -MCPAN -e shell |
2. graph-easy 语法
graph-easy 语法都是基于 Graph::Easy::Parser
2.1 节点
单节点:即单个节点,用[xx]表示,比如[a]那出来的就一个节点
1
2
3+---+
| a |
+---+复合节点:由多个节点组成的一个符合节点,用[xx | xx | xx]表示,节点之间使用|分隔,比如[a | b | c | d]
1
2
3+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
2.2 连接线
单向箭头:使用->表示,比如[a] -> [b](如果有多个节点):
1
2
3+---+ +---+
| a | --> | b |
+---+ +---+无方向连接线:使用–表示,比如[a] – [b]:
1
2
3+---+ +---+
| a | --- | b |
+---+ +---+双横线单向箭头:使用==>表示,比如[a] ==> [b]:
1
2
3+---+ +---+
| a | ==> | b |
+---+ +---+点横线单向箭头:使用..>表示,比如[a] ..> [b]:
1
2
3+---+ +---+
| a | ..> | b |
+---+ +---+波浪线单向箭头:使用
>表示,比如[a] ~> [b]:1
2
3+---+ +---+
| a | ~~> | b |
+---+ +---+横线、点单向箭头:使用.->表示,比如[a] .-> [b]:
1
2
3+---+ +---+
| a | .-> | b |
+---+ +---+双向箭头:使用<->表示,比如[a] <-> [b]:
1
2
3+---+ +---+
| a | <--> | b |
+---+ +---+双横线双向箭头:使用<=>表示,比如[a] <=> [b]:
1
2
3+---+ +---+
| a | <==> | b |
+---+ +---+
2.3 注释
文档注释:在输入文件中同样支持注释(和普通配置文件的注释没啥区别),使用#开始:
1
2
3# top
[a] <=> [b] # mid
# test连接线注解:通常在节点之间连线时会在上面加一些说明表示行为说明,可以在连接线标签后面追加{label: “说明”}(建议加上双引号,如果注解中有空格的话可能会造成阅读上的困难),比如[a] – {label: “this is test line”} [b]:
1
2
3+---+ this is test line +---+
| a | -------------------- | b |
+---+ +---+
3. 示例
3.1 画个分支
1 | # graph-easy <<< '[a]->[b]->[c][b]->[d]->[e]' |
3.2 设置”宽度”
1 | # graph-easy <<< '[a]{rows:3}->[b]->[c]->[a]' |
3.3 环绕线框图
1 | # graph-easy <<< '(backend: [a]->[b])[b]->[c]' |
3.4 graph文件方式
1 | # cat input.txt |
更多示例:https://github.com/ironcamel/Graph-Easy/tree/master/t/txt
参考:
Graph::Easy
man graph-easy
Github Graph-Easy
关于GraphEasy的简单捣腾
有趣的图制作工具graph-easy