【图形描述语言】Graphviz Dot

本系列介绍 文本转图片 工具支持的图形描述语言。图形描述语言将图片描述为代码或者文本,有利于版本管理,很适合嵌入 LaTeX 或 Markdown 文档。用于网站时,还可以减轻图片存储压力,因为图片可以根据代码在使用时生成。本文是该系列第六篇,介绍 Graphviz Dot 语言。

概述

Graphviz 是一款开源图形可视化软件。图可视化是将结构信息表示为抽象图和网络图的一种方法。它在网络、生物信息学、软件工程、数据库和网页设计、机器学习以及其他技术领域的视觉界面方面有重要的应用。

Graphviz 布局程序以简单的文本语言描述图形,并以有用的格式(如 web 页面的图像和 SVG)生成图形;PDF 或 Postscript,以供加入其他文件;或显示在交互式图形浏览器中。Graphviz 对于具体图有许多有用的特性,例如颜色、字体、表格节点布局、行样式、超链接和自定义形状的选项。

Graphviz 有 6 个引擎,分别是:

  • dot - “层次”或有向图的分层绘图。如果边具有方向性,这是默认使用的工具。
  • neato - “spring model” 布局。如果图不是太大(大约 100 个节点),而且您对它一无所知,那么这是默认的工具。Neato 试图最小化一个全局能量函数,它相当于统计多维尺度。
  • fdp - “spring model”的布局类似于neato,但它是通过减少力而不是利用能量来实现的。
  • sfdp - fdp 的多尺度版本,用于大图形的布局。
  • twopi - 径向布局,after Graham Wills 97。节点被放置在同心圆上,这取决于它们与给定根节点的距离。
  • circo - 圆形布局,after Six and Tollis 99, Kauffman and Wiese 02。这适用于多个循环结构的某些图,例如某些电信网络。

Graphviz 内容较多,本文仅简单介绍其语法,更多内容请参考 Graphviz 文档

语法

图形类型

无向图

使用关键词 graph 开始,连接线用 --

Graphviz 无向图
Graphviz 无向图

有向图

使用关键词 digraph 开始,连接线用 ->

有向图
有向图

属性

DOT语言中,可以对节点和边添加不同的属性。这些属性可以控制节点和边的显示样式,例如颜色,形状和线形。可以在语句和句尾的分号间放置一对方括号,并在其中中放置一个或多个属性-值对。多个属性可以被逗号和空格(, )分开。节点的属性被放置在只包含节点名称的表达式后。

Graphviz设置属性
Graphviz设置属性

子图

需使用 subgraph 开始,并且子图名称以 cluster_ 开头,如下:

Graphviz子图
Graphviz子图

节点和边

多边形节点

Graphviz 多边形节点形状
Graphviz 多边形节点形状

Record-based 节点

Record-based节点
Record-based节点

节点风格

The style attribute can be used to modify the appearance of a node. At present, there are 8 style values recognized: filled, invisible, diagonals, rounded. dashed, dotted, solid and bold. As usual, the value of the style attribute can be a comma-separated list of any of these. If the style contains conflicts (e.g, style="dotted, solid"), the last attribute wins.

style filled
style filled
style rounded
style rounded

箭头形状

箭头相关属性有 arrowheadarrowtaildirpenwidth 等。以下是一个例子。

WordPress Text2Chart
WordPress Text2Chart

基本形状

基本形状有 11 个,分别是 box,crow,curve,icurve,diamond,dot,inv,none,normal,tee,vee。示例代码如下:

Graphviz 箭头形状
Graphviz 箭头形状

扩展形状

配合 修饰词(modifiers),还可以扩展出很多形状。有如下修饰词:

  • l - 裁剪形状,只留下边缘左边的部分。
  • r - 裁剪形状,只留下边缘右侧的部分。
  • o - 使用形状的开放(非填充)版本。

示例如下:

箭头修饰词
箭头修饰词

颜色

参见 官方文档

Graphviz画廊

UNIX
UNIX
状态机
状态机
ER图
ER图

以上就是全部内容,欢迎到 文本转图片工具 试用。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注