Graphviz诞生于AT&T的Bell实验室的一个开源的 (EPL授权)、跨平台的脚本自动化绘图软件工具。Graphviz使用一种称为dot语言的DSL语言编写Script File脚本文件,然后使用Layout布局引擎解析这个Script File脚本文件完成自动化布局渲染 。
本教程操作环境:windows7系统、Dell G3电脑。
Graphviz(Graph Visualization)
是1990年代初诞生于AT&T
的Bell实验室
的一个开源的 (EPL授权) 、跨平台 的 脚本自动化绘图软件工具。
Graphviz
使用一种称为dot
语言的DSL(Domain Special Language)
语言编写Script File脚本文件
,然后使用Layout布局引擎
解析这个Script File脚本文件
完成 自动化布局渲染 。
AT&T
是美国三大的电信运营商之一,现在美国的电信运营商行业也是从原AT&T
被强行支解后再不断合并后形成群雄逐鹿的竞争局面。AT&T
的前身是Bell电话公司
,Bell电话公司
是发明电话的公司。
在IT软件世界中,Bell实验室
创造了Unix
、C语言
等一系列伟大的发明。
Graphviz
脚本文件一般以.gv
或.dot
为文件扩展名,由于Microsoft Office Word
模板文件的扩展名也是.dot
,为避免冲突,一般建议Graphviz
脚本文件的扩展名保存为.gv
。
备注: 在Graphviz中,
dot
这个词主要有三种不同的用途:
Graphviz
的Script脚本
的语言名称/语法名称
Graphviz
的 其中一种Layout
名称,同时也是 其中一种CLI
命令名称
Graphviz
的 其中一种Script File(脚本文件)
常用扩展名
自动排版效率更高: Graphviz
主要用于绘制“关系图”,Graphviz
自动排版以使“最小化连线交叉”,Graphviz
的自动排版比“所见即所得”的绘画软件(如:Omnigraffle
、Microsoft Office Visio
等)
文本文件管理更方便: VCS(Version Control System版本控制系统)
对“所见即所得”的绘画软件生成的文件无法有效地进行版本管理,而文本文件则可以在VCS
中有效地被进行版本管理起来
其他自动化绘图工具的基础: Graphviz
是其他自动化绘图工具的基础(如PlantUML
等),也是很多Data Visualization数据可视化
工具的基础,有点类似于Python
中Matplotlib
的作用
Graphviz
的基本组成结构包括Layout自动化布局工具
和Script脚本文件
两部分。
Script脚本文件
主要包括Elements实体
和Attributes属性
两部分。
Elements实体
主要包括Graph图
、Node节点
、Edge连线
三种类型。
备注: 如果需要在软件中调用
Graphviz
,Graphviz
还提供了C/CPP
、Java
、Python
、php
等语言的API
。
Graphviz基本组成结构
Graphviz
使用起来也非常简单方便,其一般流程如下:
Graphviz的一般使用流程
在MacOS 10.6
之前由Glen Low开发的MacOS X GUI版本于2004年获得了两项苹果设计奖( "Best Product New to Mac OS X Runner-Up" 和 "Best OS X Open Source Product 2004 Winner" ),当时的MacOS X
基于PowerPC CPU
,该Graphviz GUI版
自2004年08月23日发布支持MacOS 10.3
的1.13版本之后该就没有再更新,即:该Graphviz GUI版
不能在当今基于Intel CPU
的macOS中运行。。
MacOS 10.2和10.3基于
PowerPC CPU
,2005年发布的10.4开始同时基于Intel CPU
和PowerPC CPU
,2009年发布的10.6不再支持PowerPC CPU
。
目前暂未发现有支持MacOS X 10.6
以后的独立GUI客户端
,MacOS X 10.6
以后可以使用CLI
或在其他内嵌Graphviz
工具中使用(比如:在ATOM编辑器中使用markdown-preview-enhanced
插件中可嵌入Graphviz Script File
)。
digraph gv_basic_structure{ label=<<B>Graphviz基本组成结构</B>>; labelloc=t; bgcolor=transparent; node[shape=box]; //edge[style=bold]; graphviz[label="Graphviz"]; subgraph{ layout[label="Layouts"]; script[label="Script Files"]; api[label="APIs"] rank=same; } graphviz -> layout; graphviz -> script; graphviz -> api; script -> subgraph{ element[label="Elements"]; attribute[label="Attributes"]; rank=same; } layout -> subgraph{ layout_etc[label="......"]; layout_dot[label="dot"]; layout_neato[label="neato"]; } element -> subgraph{ ele_graph[label="Graph"]; ele_node[label="Node"]; ele_edge[label="Edge"]; } }
@startuml start :定义Graph属性; :定义Node、Edge默认属性; :添加Node和Edge; :定义特定Node、Edge的个性属性; :使用CLI或GUI布局引擎工具渲染绘制; end @enduml
更多编程相关知识,请访问:编程教学!!
以上是Graphviz是什么的详细内容。更多信息请关注PHP中文网其他相关文章!