1-使用 Graphviz
1-1-下载,安装客户端Graphviz
1-1-2-Graphviz windows客户端
可用版本下载地址 | graphviz-2.38 :URL
下载速度可能会和慢
1-1-3-安装,配置教程
参考 | windows下Graphviz安装及入门教程的实现方法 : URL
1-2-在线网站
网站1| Uhttp://www.webgraphviz.com
网站2推荐
| http://dreampuf.github.io
1-3-使用 VSCode 进行预览生成
在官网下载graphviz安装包
安装 vscode 插件 Graphviz Preview
在settings.json
中添加 “graphvizPreview.dotPath”: "graphviz_path\graphviz-2.38\\release\\bin\\dot.exe"
, graphviz_path` 为所在路径,这些修改一下既可
新建一个 dot 文件,右上角就会有预览生成的按钮了
2-概述Dot和Graphviz
2-3-1-Q-Graphviz是什么?
1---一个程序(软件)
2---功能 : 作图【各种图】,自动排版
3---可生成png,pdf……格式
2-3-2-Q-Graph的组成?
1---graph(图)
2---node(节点)
3---edge(边)
4---attribute(属性)
2-3-4-Q-Graphviz如何使用?
1---使用专门的语言编写,dot……
2-4-1-Q-DOT是什么?
1---一种计算机语言,dot语言
2---可以画图
2-4-2-Q-dot的历史?
2-4-3-Q-dot有什么用?
1---画图
2-4-4-Q-dot怎么用?
定义dot的抽象语法,抽象语法,抽象语法
定于约束规则如下
1.graph //声明图
[strict] (graph | digraph) ['ID'] '{ stmt_list}'
2.stmt_list
[strict [';'] stmt_list]
3.stmt
node_stmt |edge_stmt | attr_stmt | ID = 'ID' | subgraph
4.attr_stmt //属性语句使用
(graph | node | edge ) attr_list
5.attr_list //属性列表使用
'[' [a_list] ']' [attr_list]
6.a_list
ID '=' ID [ ( ';' | ';' ) ] [a_list]
7.edge_stmt //边语句使用
(node_id |subgraph) edgeRHS [attr_list]
8.edgeRHS
edgeop (node_id |subgraph |edegRHS)
9.node_stmt
node_id
10.node_id
ID [port]
11.port
'I' ID ['I' compass_pt] 'stmt_list'
12.subgraph
[subgraph [10]] '{stmt_list'}'
13.compass-pt
(n | ne | e | se | s | sw | w |nw | -)
2-4-5-dot语法关键字
strict | 严格图限定,禁止创建多个相同的边
graph | 无向图,在创建图之前必须声明是有向图还是无向图
digraph | 有向图(常用)
node | 节点
edge | 边
subgraph | 子图
说明
1.图(graph)
---整个图graph,必须使用graph,或digraph {
} ,限定说明图
---图中声明列表可为空,也可为多个,声明后,;为可选项
2.属性(attribute)
---形如 [shape="",style="",weight="",……]的称为属性列表
---属性必须使用[ ]括起来
---属性列表项为 key=value的形式存在,列表项可以以 ","或";"结尾
3.边(edge)
4.节点(node)
---节点标识符 [label="节点描述文字" ,height=.5]
---如
node0 [label = "<postid1 > string | <postid2> string | <postid3> string3"]
node:head[color="lightblue"] //设置该节点node0部分的颜色
3-教程
3-1-快速入门
简单例子-无向图
graph graphname {
a -- b;
b -- c;
b -- d;
d -- a;
}
效果
一样的图,不一样的布局
graph graphname {
rankdir=LR; //Rank Direction Left to Right
a -- b;
b -- c;
b -- d;
d -- a;
}
效果
简单例子-有向图
digraph graphname{
a -> b;
b -> c;
a -> c;
}
带标签的有向图
digraph graphname{
T [label="Teacher"] // node T
P [label="Pupil"] // node P
T->P [label="Instructions", fontcolor=darkgreen] // edge T->P
}
同样的图,不同颜色,样式
digraph graphname {
T [label="Teacher" color=Blue, fontcolor=Red, fontsize=24, shape=box] // node T
P [label="Pupil" color=Blue, fontcolor=Red, fontsize=24, shape=box] // node P
T->P [label="Instructions", fontcolor=darkgreen] // edge T->P
}
可选择的node节点的形状
digraph graphname {
rankdir="BT"
box [shape="box"];
polygon [shape="polygon"];
ellipse [shape="ellipse"];
oval [shape="oval"];
circle [shape="circle"];
point [shape="point"];
egg [shape="egg"