Graphviz:一款强大的图形可视化开源软件
前言
图形可视化在机器学习、网络、软件工程、数据库、生物信息、网页设计等技术领域有着重要的应用,实用高效的自动图形绘制软件在今日显得越来越具价值。今天,笔者向大家推荐一款开源的图形可视化软件Graphviz(Graph Visualization Software), 它使用方法简单,功能强大,能满足关系图、流程图、数据结构图、网络图、树形图等各种图形的绘制需求。
一、Graphviz简介
Graphviz由贝尔实验室开发,通过领域特定语言dot脚本绘制图形,并执行布局引擎来完成自动布局。它的主要特点包括:
自动排版,布局美观;
具备多种可供调整的有用特性包括颜色、字体、表格节点布局、线条样式、超链接、自定义形状等;
生成图片支持bmp、emf、eps、gif、jpg、pdf、png、ps、svg、tif等多种格式;
支持windows、linux、mac等多种操作系统。
二、下载安装
下载网址为
http://graphviz.org/download/,各平台下载安装方式均有介绍,过程简单,不再赘述。下文描述均基于windows系统。打开安装好的程序后如下图,只需在graph1.gv窗口输入Dot语言脚本,然后点击Layout按钮即可生成图片,Settings按钮可设置输出图片格式等。
三、Dot语言
图形可视化时要用软件能理解的格式来表示图形。Graphviz使用Dot语言格式,该格式可以以人类可读的方式编码图形的大多数属性。掌握Dot语言并不难,甚至对有编程基础的人员来说是非常简单,语法具体介绍见
https://graphviz.org/doc/info/lang.html,在此不赘述,通过下文所举示例即可掌握其常用部分。
四、绘图方法
4.1 基本方法
Dot语言主要描述3种对象:图、节点和边。图的形式可为有向图(关键字为digraph)或无向图(关键字为graph),另外在一个主图中还可通过subgraph定义子图。基本绘图方法示例如下:
如上,左图为Dot脚本,右图为输出结果。脚本第1行设定图属性和名称。如果1个字符串在脚本中第一次出现,它将会被创建为1个节点,比如“main”。注意,实际脚本中不需要行号,在此加上是为了更好地描述相关事项。
通常还要调整节点、边和图的属性和位置:
Dot脚本中方括号内为节点或边的属性;第12行设置了一个节点属性,随后第13行的compare节点继承了该属性。
4.2 无向图绘制
一个无向图的Dot脚本从关键字graph开始,后面跟图的名称。节点u和v之间的无向边可以由u -- v指定。举例如下:
4.3 有向图绘制
一个有向图的Dot脚本从关键字digraph开始,后面跟图的名称。节点u到v的有向边可以由u -> v指定。上文“基本方法”一节绘制的即为有向图,另举例如下:
4.4 绘图属性
Graphviz提供了大量的节点、边、图、箭头类型、颜色等属性可供用户调整,具体可从Graphviz官网文档查阅,本文仅用部分箭头属性示例:
4.5 高级功能
节点连接方式
节点连接方向可通过headport和tailport进行设置,共有8种位置:n、ne、e、se、s、sw、w、nw,分别表示8个方位。注意headport表示有向边的箭头端即终端,tailport表示起始端,示例如下:
针对shape=record的节点,还可以指定节点连接的位置(使用<>来定位),比如下面的数据结构图:
子图
绘制子图需使用subgraph关键字。如果最高层级图的复合属性compound设置为true,Dot将允许边与节点或子图连接。示例如下,注意b->f、c->e的连接方式:
五、结束语
根据上述介绍,可以看出Graphviz是一款功能强大、使用便捷、上手容易的开源图形可视化软件,能满足机器学习、网络、软件工程、数据库、生物信息、网页设计等技术领域的相关图形绘制需求。希望读者尝试去使用它,相信一定会对您的学习工作起到促进作用。