系统:Windows 7
软件版本:Graphviz2.38
- 好久不见,接下来会有几篇文章讲解
dot
语言- 今天介绍一个简单的案例
效果图

对应dot代码
digraph test{
node [ fontname = "Microsoft YaHei", fontsize =60]
edge [ fontname = "Microsoft YaHei", fontsize =60]
a [ label = "node1"]
b [ label = "node2"]
c [ label = "node3"]
a -> b [ label = "line1"]
a -> c [ label = "line2"]
subgraph cluster_graph1{
node [ fontname = "Microsoft YaHei", fontsize =12]
edge [ fontname = "Microsoft YaHei", fontsize =12]
d [ label = "node4"]
e [ label = "node5"]
f [ label = "node6"]
d -> e [ label = "line3"]
d -> f [ label = "line4"]
}
}
代码截图

Part 1:整体结构
- 制作一个图,总共涉及到三个文件
- 写dot语言的gv文本文件,一个bat执行文件,一个生成的图片
- 代码主体写在gv文件中,使用dot语言
- bat文件的目的旨在将dot代码渲染成图片
dot 示例.gv -Tpng -o 示例.png
- 渲染算法(dot) gv文件(示例.gv) 目标文件格式(-Tpng) 输出(-o) 输出文件名称(示例.png)
- 其中渲染算法(dot) 及目标文件格式(-Tpng)存在其它选择,后续会介绍其中的一些
三个文件

Part 2:gv文件
- 第一层,
digragh 名称{}
,最外层结构,指明输出图的名称 - 图里可以有节点和线,也可以有子图,子图里同样存在节点和线以及子图,嵌套(三大结构:图 线 点)
- 图/节点/线都有其属性
- 可以统一对其进行属性设置,下面就是对节点和线中字体及其大小进行设置
- node [ fontname = "Microsoft YaHei", fontsize =12]
- edge [ fontname = "Microsoft YaHei", fontsize =12]
- 当然三大对象中的单个实例可以单独设置
- 节点定义:直接写一个变量即可,例如a,紧接着节点使用
[]
定义其属性
- label定义节点名称
- 存在不同子图中的节点,如果是不同节点,需使用不同变量名称,例如子图cluster_graph1中的节点就不要再使用变量a/b/c
- 线定义:节点1 -> 节点2,其中
->
是线定义的关键
- label定义线的名称,其实就是由节点1指向节点2的那条线上写的字
- 子图定义,最外一层图,使用
digragh
来定义,子图则使用subgraph来定义
- 注意:子图的名称必须以cluster来开始,否则无法识别子图
- 子图同样使用
{}
将其中的内容包围起来
- 属性的定义采用就近原则,大家可以将子图中的
node/edge
删除,看看效果
以上为本次的学习内容,下回见
本文为原创作品,如若转载请标明出处,如发现有错误,欢迎留言指出
常按图片识别二维码,关注本公众号
Python 优雅 帅气
网友评论