分享

Graphviz:一款强大的图形可视化开源软件

 菌心说 2021-10-16
文章图片1

前言

图形可视化在机器学习、网络、软件工程、数据库、生物信息、网页设计等技术领域有着重要的应用,实用高效的自动图形绘制软件在今日显得越来越具价值。今天,笔者向大家推荐一款开源的图形可视化软件Graphviz(Graph Visualization Software), 它使用方法简单,功能强大,能满足关系图、流程图、数据结构图、网络图、树形图等各种图形的绘制需求。

一、Graphviz简介

Graphviz由贝尔实验室开发,通过领域特定语言dot脚本绘制图形,并执行布局引擎来完成自动布局。它的主要特点包括:

  • 自动排版,布局美观;

  • 具备多种可供调整的有用特性包括颜色、字体、表格节点布局、线条样式、超链接、自定义形状等;

  • 生成图片支持bmp、emf、eps、gif、jpg、pdf、png、ps、svg、tif等多种格式;

  • 支持windows、linux、mac等多种操作系统。

文章图片2

二、下载安装

下载网址为
http:///download/,各平台下载安装方式均有介绍,过程简单,不再赘述。下文描述均基于windows系统。打开安装好的程序后如下图,只需在graph1.gv窗口输入Dot语言脚本,然后点击Layout按钮即可生成图片,Settings按钮可设置输出图片格式等。

文章图片3

三、Dot语言

图形可视化时要用软件能理解的格式来表示图形。Graphviz使用Dot语言格式,该格式可以以人类可读的方式编码图形的大多数属性。掌握Dot语言并不难,甚至对有编程基础的人员来说是非常简单,语法具体介绍见
https:///doc/info/lang.html,在此不赘述,通过下文所举示例即可掌握其常用部分。

四、绘图方法

4.1 基本方法

Dot语言主要描述3种对象:图、节点和边。图的形式可为有向图(关键字为digraph)或无向图(关键字为graph),另外在一个主图中还可通过subgraph定义子图。基本绘图方法示例如下:

文章图片4

如上,左图为Dot脚本,右图为输出结果。脚本第1行设定图属性和名称。如果1个字符串在脚本中第一次出现,它将会被创建为1个节点,比如“main”。注意,实际脚本中不需要行号,在此加上是为了更好地描述相关事项。

通常还要调整节点、边和图的属性和位置:

文章图片5

Dot脚本中方括号内为节点或边的属性;第12行设置了一个节点属性,随后第13行的compare节点继承了该属性。

4.2 无向图绘制

一个无向图的Dot脚本从关键字graph开始,后面跟图的名称。节点u和v之间的无向边可以由u -- v指定。举例如下:

文章图片6

4.3 有向图绘制

一个有向图的Dot脚本从关键字digraph开始,后面跟图的名称。节点u到v的有向边可以由u -> v指定。上文“基本方法”一节绘制的即为有向图,另举例如下:

文章图片7

4.4 绘图属性

Graphviz提供了大量的节点、边、图、箭头类型、颜色等属性可供用户调整,具体可从Graphviz官网文档查阅,本文仅用部分箭头属性示例:

文章图片8

4.5 高级功能

  • 节点连接方式

节点连接方向可通过headport和tailport进行设置,共有8种位置:n、ne、e、se、s、sw、w、nw,分别表示8个方位。注意headport表示有向边的箭头端即终端,tailport表示起始端,示例如下:

文章图片9

针对shape=record的节点,还可以指定节点连接的位置(使用<>来定位),比如下面的数据结构图:

文章图片10
  • 子图

绘制子图需使用subgraph关键字。如果最高层级图的复合属性compound设置为true,Dot将允许边与节点或子图连接。示例如下,注意b->f、c->e的连接方式:

文章图片11

五、结束语

根据上述介绍,可以看出Graphviz是一款功能强大、使用便捷、上手容易的开源图形可视化软件,能满足机器学习、网络、软件工程、数据库、生物信息、网页设计等技术领域的相关图形绘制需求。希望读者尝试去使用它,相信一定会对您的学习工作起到促进作用。

文章图片12 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多