输出

阅读本章之前,请先阅读概论

本章说明了Graph::Easy支持的输出格式以及各种格式的限制,优点以及缺点。

格式

Graph::Easy可以产生如下几种输出格式:

  • ASCII:使用ASCII art绘制图形
  • Box Art: 使用Unicode的"box drawing" 字符创建文本图形
  • HTML: 使用HTML+CSS代码来渲染图形
  • SVG: 产生可伸缩矢量图形输出

另外,可以用以下几种描述语言来描述图形:

  • txt: Graph::Easy自定义的文本描述语言,用Graph::Easy的解析起解析
  • graphviz : 使用graphviz语言,可以通过某些外部程序比如dot 生成PNG, SVG等输出
  • GraphML : GraphML语言
  • yED : yED语言

ASCII

ASCII格式的输出只能有两种颜色,一个是前景色,一个是背景色。

  1. #============================================#
  2. H v
  3. +---------+ ........ +---------+ +--------+ +--------+
  4. | Bautzen | --> : Bonn : --> | Koblenz | --> | Berlin | --> | Kassel |
  5. +---------+ :......: +---------+ +--------+ +--------+
  6. ^ | ^ ^
  7. : +------------+---------------+
  8. : |
  9. : +------+ |
  10. ............. | Ulm | ------+
  11. +------+

这种格式有如下限制:

  • 不论真实的边的箭头如何,这种格式的箭头永远是打开的
  • 节点的形状不支持多边形或者圆角
  • 以下几种边bold, broad和wide都用#渲染,因此看起来是一样的.

Box Art

这种方式和ASCII原理差不多,但是使用它Unicode的box art字符;这种方式边角之间的空隙更小,因此看起来效果好很多。Box Art和ASCII的限制差不多,但是有以下不同:

  • 边角看起来更好
  • 支持圆角
  • 支持不同的箭头风格
  • 边的几种风格bold, broad和wide可以正常使用
  1. My sample graph
  2. Test
  3. label
  4. ┌···············································┐
  5. : v
  6. ┌─────────────┐ label ▛▀▀▀▀▀▀▜ ┌───────┐
  7. │ One │ ───────> ▌ Two ▐ ▬▬▬▬▬▬▬▬▬▬▬▬> │ Four │ ··· None
  8. └─────────────┘ ▙▄▄▄▄▄▄▟ └───────┘
  9. ║ Test label
  10. ║ ┌╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴┐
  11. v ╵ v
  12. ┌−−−−−−−−−−−−−┐ ████████ ┏━━━━━━━┓ ┌───────┐
  13. ┌·······╎ Three ╎ <══════> █ Five █ ────────────> ┃ Seven ┃ ─── │ Eight │
  14. : └−−−−−−−−−−−−−┘ ████████ ┗━━━━━━━┛ └───────┘
  15. : ^ │ ^
  16. : │ │ │
  17. : Test │ Test label └────────────────────────────────────┘
  18. : label v
  19. : ┌─────────────┐
  20. : │ Sixty │
  21. : │ Six │
  22. : │ and │
  23. └······>│ six │
  24. └─────────────┘

HTML

HTML效果看起来如下:

输出 - 图1

SVG/GraphML/yED

略