GraphViz:2 DOT语法和相关应用
一、说明
1.1 Graphviz制图概述
总的来说,Graphviz 支持两类图:
- 无向图
- 有向图
1.2 组成部分
node
节点edge
边subgraph
子图attr
属性
1.3 DOT文件
dot文件是一个文本脚本,是专门存储有向图,或无向图的信息文件,通过dot指令可以将一个dot文件转化成图片,或pef文件,可视化完成。
二、 *.DOT文件要点----关于dot的语法
2.1 无向图的语法
1)如何生成以下的无向图?
2)语句如下:
graph{ a--b; b--c; c--a;}
3)语法解释:
- graph{} 是图的关键词,任何图都包含该语句;
- a--b;是表示相邻顶点的“有边”关系,‘--’表示a顶点和b顶点可达,‘;’表该边描述语句完毕。
5)输出
将上述实现语句存入文本文件d:/new.dot,打开windows的cmd,进入cd d: 后,输入:
dot -T jpg ./new.dot -o new-grap.jpg
输出完成,打开new-grap.jpg,得到:
图1 无向图的dot绘制案例 ( 左边图,不够美观,用graph{ a--{b,c}; b--c;} 语法代替生成右图。 )
2.2 简单有向图的语法
1)如何生成以下的有向图?
2)语句如下:
digraph{ a->b; a->c; c->d;}
3)语法解释:
- digraph{} 是有向图的关键词,任何图都包含digraph{}或graph{};
- a->b;是表示相邻顶点的“有向边”关系,‘->’表示a顶点和b顶点出入关系可达,‘;’表该边描述语句完毕。
5)输出
将上述实现语句存入文本文件d:/new.dot,打开windows的cmd,进入cd d: 后,输入:
dot -T jpg ./new.dot -o new-grap.jpg
输出完成,打开new-grap.jpg,得到:
图2 有向图的DOT绘制案例
三、 更丰富的dot的语法
1)带标签的语法结构
2)色彩丰富的图
digraph {player[label = "player", color = Blue, fontcolor = Red, fontsize = 24, shape = box];game[label = "game", color = Red, fontcolor = Blue, fontsize = 24, shape = ellipse];player -> game[label = "play"]
}
3 在节点插入图片
digraph {c[shape = none, image = "./D06.png"]a -> b -> c;c -> d;
}
4 在节点插入图片
节点和连线的统一定义(先进行node、edge的统一定义,在定义数据的节点):
digraph {node[color = Red, fontsize = 24, shape = box]edge[color = Blue, style = "dashed"]c[shape = none, image = "./pic.png"]a -> b -> c;c -> d;
}
5 在一个图中,嵌入子图
digraph {label = visitNetrankdir = LRnode[color = Red, fontsize = 24, shape = box]edge[color = Blue, style = "dashed"]user[style = "filled", color = "yellow", fillcolor = "chartreuse"]subgraph cluster_cd{label = "server and browser"bgcolor = green;browser -> server}user -> computer;computer -> browser;
}
6 结构视图
注意点
1 用节点定义node[shape = record];定义节点是结构
2 用label=“字符串” 定义结构的内容,用“|”分割开
3 用<结构项标号>标明结构的单项标号
3 用 结构体:单项标号->结构体:单项标号 表明关系连线
digraph {node[shape = record];struct1[label = "<f0> left|<f1> mid\ dle|<f2> right"];struct2[label = "<f0> one|<f1> two"];struct3[label = "hello\nworld | {b|{c|<here> d|e}|f}|g|h"];struct1:f1 -> struct2:f0;struct1:f2 -> struct3:here;
}
7 树形结构
digraph tree {fontname = "PingFang-SC-Light"fontsize = 24node[shape = "plaintext"]1 -> 2;1 -> 3;2 -> 4;2 -> 5;3 -> 6;3 -> 7;4 -> 8;4 -> 9;5 -> 10;5 -> 11;6 -> 12;6 -> 13;7 -> 14;7 -> 15;
}
8 继承关系
digraph UML {node[fontname = "Courier New", fontsize = 10, shape = record];edge[fontname = "Courier New", fontsize = 10, arrowhead = "empty"];Car[label = "{Car | v : float\nt : float | run() : float}"]subgraph clusterSome{bgcolor = "yellow";Bus[label = "{Bus | | carryPeople() : void}"];Bike[label = "{bike | | ride() : void}"];}Bus -> CarBike -> Car}
9 时序关系图
digraph time {rankdir = "LR";node[shape = "point", width = 0, height = 0];edge[arrowhead = "none", style = "dashed"];{rank = "same"edge[style = "solided"];APP[shape = "plaintext"];APP -> step00 -> step01 -> step02 -> step03 -> step04 -> step05;}{rank="same";edge[style="solided"];SDK[shape="plaintext"];SDK -> step10 -> step11 -> step12 -> step13 -> step14 -> step15;}{rank="same";edge[style="solided"];AliPay[shape="plaintext"];AliPay -> step20 -> step21 -> step22 -> step23 -> step24 -> step25;}{rank="same";edge[style="solided"];Server[shape="plaintext"];Server -> step30 -> step31 -> step32 -> step33 -> step34 -> step35;}step00 -> step10 [label="sends order info", arrowhead="normal"];step11 -> step21 [label="open AliPay", arrowhead="normal"];step22 -> step12 [label="pay success", arrowhead="normal"];step13 -> step03 [label="pay success", arrowhead="normal"];step24 -> step34 [label="pay success", arrowhead="normal"];
}
三、.DOT的布局器参考
以下将说明这两类图的基本语法,同时,为了丰富图像,顶点和边都具有各自的属性,比如形状,颜色,填充模式,字体,样式等。主要的布局器如下:
- dot: 默认布局方式,主要用于有向图;
- neato:基于 sprint model 模型,又称force-based 或者 energy minimized;
- twopi:径向布局,放射状;
- circo:圆环布局;
- fdp:无向图;
- dotty:一个用于可视化与修改图形的图形用户界面程序;
- lefty:一个可以显示 DOT 图形的可编程控件,并允许用户用鼠标在图上执行操作。
参考文章:
- 关于语法:GraphViz Examples and Tutorial (grevian.org)
- GraphViz的其它用途:GraphViz的使用 - 简书 (jianshu.com)
- 使用Graphviz和DOT语言绘图-百度经验 (baidu.com)
- Graphviz 的中文文档,Graphviz 中文文档
- Dot 语言介绍(想要更多了解的时候可以查看),Graphviz Dot 语言介绍
- Python Graphviz 的入门文档,Graphviz User Guide
- Python Graphviz 的 Example 介绍,Graphviz 的例子
- Graphviz 的下载,Graphviz Download
- 使用 Graphviz 的例子,生成项目UML框架图-pyreverse介绍
- GraphViz Examples and Tutorial (grevian.org)
GraphViz:2 DOT语法和相关应用相关推荐
- graphviz的基本语法及使用
基本语法 字符串 都要加双引号, 可以加\n换行符 注释 双斜杠// 或/* */ 有向图 digraph, 节点关系: 指向-> 无向图 graph, 节点关系: 连通 -- 属性 node[ ...
- Graphviz:利用可视化工具Graphviz将dot数据进行图像可视化或者图像保存(两大方法)之详细攻略
Graphviz:利用可视化工具Graphviz将dot数据进行图像可视化或者图像保存(两大方法)之详细攻略 目录 graph_feature函数:为给定的特征生成特征谱系图
- Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件
Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件 目录 Graphviz软件的下载 Graphviz将dot文件转为结构图的pdf文件 输出结果 Gr ...
- Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件
Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件 目录 Graphviz软件的下载 Graphviz使用方法 Graphviz软件的下载 Graphv ...
- 用dot函数C语言画矩形,Graphviz绘图 - DOT语言
Graphviz绘图 - DOT语言 一.关于Graphviz 1.1 简介 Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启 ...
- 英文写作——The Elements of Style知识点解读6—位于句首的分词短语必须和句子的语法主语相关
The Elements of Style Elementary Rules of Usage 惯用法的基本规则 第11条: Rule 11: A participial phrase at the ...
- Delphi - 新语法之类相关的
技术交流,DH讲解. 今天就把Delphi新语法中与类相关都讲了. 1 静态系列. 静态成员变量,静态方法,静态属性. 静态方法只能使用静态成员变量或者其他常量. 一个例子: typeTMyClass ...
- 【Java】数组Array(概念、相关语法、相关算法)
数组 文章目录 数组 1.数组的相关概念和名词(了解) 2 .数组的相关语法 2.1. 数组的声明 2.2. 数组的初始化 2.3.数组的遍历 2.4. 数组的内存分析 3. 数组的相关算法 3.1. ...
- Markdown语法、相关警告配置设置——持续更新
Markdown 一.配置 MD025-Multiple top level headings in the same document 同一文档只能有一个最高级的标题,默认是只能有一个1级标题. 解 ...
最新文章
- android图像处理(3)底片效果
- MySQL高性能优化规范建议
- 创建二维数组(一维长度3,二维长度6),值为一维数组和二维数组索引值的积
- linux和python哪个工资高,关于树莓派:用它来学习Linux及Python真的高效?
- 在c语言中合法标识符的第一个字符必须是,c语言合法标识符判断规则是什么?...
- asp.net 抓取html内容,c# – 如何从ASP.NET获取网页的HTML内容
- 计算机专业简述,简述计算机专业毕业论文完整版.doc
- 2018-2019-1 20165301 《信息安全系统设计基础》第六周学习总结
- java开发的程序怎么用_java安装后怎么使用?第一次编写java程序
- 计算机软件存储位置,微信电脑版存储位置在什么地方?查看微信电脑版存储路径的方法...
- 创建一个闪亮的应用程序以使用rtweet和R搜索Twitter
- N-Tiers开发方式(为何使用COM+组件的撰写商业逻辑层)
- 机器学习代码学习(一)-first-dichotomy
- opengl-PBR基于物理的渲染(Physically Based Rendering):理论基础
- Java虚拟机:Java虚拟机结构
- Windows下使用pip时出现TSL/SSL错误解决方案
- 调用百度智能云 api --新手入门教程
- git merge --no--ff 详解
- 玩手机上瘾怎么办,怎么戒
- C++ Python 链表逆序 反转链表
热门文章
- 报错整理:ImportError: cannot import name ‘mean_absolute_percentage_error‘ from ‘sklearn.metrics‘
- 线性代数笔记:Frobenius 范数
- sklearn 笔记:数据归一化(StandardScaler)
- ntu 课程 ERIC(2):Planning your research
- Linux查看utmp文件,linuxc操作utmp和wtmp文件接口
- Python编程基础:第五十二节 高阶函数High Order Functions
- 从平台到中台:Elaticsearch 在蚂蚁金服的实践经验
- spring-data-redis工程
- Lesson 6.5Lesson 6.6.1Lesson 6.6.2 机器学习调参基础理论与网格搜索多分类评估指标的macro与weighted过程GridSearchCV的进阶使用方法
- 研究38位知名CEO的邮件后,我们有这9个发现