+
95
-

回答

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 文档。https://graphviz.gitlab.io/documentation/

语法
图形类型
无向图
使用关键词 graph 开始,连接线用 --。

graph graphname {
a -- b -- c;
b -- d;
}


有向图

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

digraph graphname {
a -> b -> c;
b -> d;
}


属性

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

graph graphname {
// label属性可以改变节点的显示名称
a [label="Foo"];
// 节点形状被改变了
b [shape=box];
// a-b边和b-c边有相同的属性
a -- b -- c [ color=blue];
b -- d [style=dotted];
}



子图

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

digraph G {

subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3;
label = "process #1";
}

subgraph cluster_1 {
node [style=filled];
b0 -> b1 -> b2 -> b3;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a3 -> a0;
a3 -> end;
b3 -> end;

start [shape=Mdiamond];
end [shape=Msquare];
}


更多请参考这篇文章:https://www.annhe.net/article-4173.html

网友回复

我知道答案,我要回答