【有用工具】画图工具之Graphviz学习笔记
文章目录
- 1. 无向图
- 2. 有向图
- 3. 进阶
- 3.1 指定边射出的方向
- 3.2 修改图片的朝向
- 3.3 绘制类似结构体的图形
- 4. 其他
在Windows10下VS Code配置Graphviz和DOT语言环境这篇文章中,我们配置了Graphviz的语言学习环境。现在开始学习DOT这个纯文本图像描述语言的常用语法。
1. 无向图
无向图的格式如下:
graph 名字 {无向图的内容
}
无向图使用 a--b
的形式来描述边,Graphviz会自动调整每个节点的位置。简单示例如下:
graph example {a--b;a--c;b--c;
}
预览效果如下:
如果边数太多,可以使用 a -- {b; c; d; e}
的方式来描述多条边,比如:
graph example {a -- {b; c; d; e; f; g; h};
}
预览效果如下:
如果还需要不同的形状和颜色,可以参考以下示例:
graph example {a -- b[color = red; label = "岛风"];a -- c[label = "恶毒"];b -- {d; e}[label = "z23"];b[shape = box];
}
预览效果如下:
即边和点的后面,可以使用 [color=xxx]
表示颜色,使用 [label="xxx"]
表示边权,[shape=xxx]
表示形状。常用的形状(点)有:box, oval, circle, point, egg, triangle, square, record
等,更多细节可以参考Graphviz的官方文档。
如果需要同时设置所有的边或点,可以使用 edge[xxx]
和 node[xxx]
。一个简单示例如下:
graph example {edge[color = red];node[shape = box];a -- b;b -- c;
}
预览效果如下:
2. 有向图
有向图的格式和无向图基本一样,只是边使用 a -> b
来描述:
digraph 名字(随意){图
}
简单示例如下:
digraph example {node[shape = circle];root[shape = box];root -> {b; e};b -> {c; d};
}
预览效果如下:
3. 进阶
3.1 指定边射出的方向
使用具体示例来说明:
digraph example{a0:w -> b0; //其中w意思是west,支持w,e,n,s,sw,se,nw,nea1:e -> b1;a2:n -> b2;a3:s -> b3;a4:nw -> b4;a5:ne -> b5;a6:sw -> b6;a7:se -> b7;
}
预览效果如下:
3.2 修改图片的朝向
把上面的例子做些修改,添加 rankdir = LR;
,将图片横置:
digraph example {rankdir= LR;a0:w -> b0; //其中w意思是west,支持w,e,n,s,sw,se,nw,nea1:e -> b1;a2:n -> b2;a3:s -> b3;a4:nw -> b4;a5:ne -> b5;a6:sw -> b6;a7:se -> b7;
}
预览效果如下:
3.3 绘制类似结构体的图形
下面以一个链表示例来解释:
digraph example {rankdir = LR;node[shape = record]; //record形状a[label = "{A|}"]; //每个'|'都是一列b[label = "{B|}"];c[label = "{C|}"];d[label = "{D|NULL}"];a -> b:w;b -> c:w;c -> d:w;
}
预览效果如下:
再通过几个示例,来学习 record
:
digraph example {a[shape = record; label = "A | B | C | D"];
}
预览效果如下:
digraph example {rankdir = LR;a[shape = record; label = "A | B | C | D"];
}
预览效果如下:
4. 其他
Graphviz还有很多功能,比如更换不同的排版引擎等,以后有时间再写一下。学习Graphviz的同时,还可以学一下PlantUML——基于Graphviz和Java,用于快速绘制UML图的特化工具,其环境配置见这篇文章。
【有用工具】画图工具之Graphviz学习笔记相关推荐
- 十分钟了解绘图神器——Graphviz学习笔记
DOT语言学习笔记 设置点和线的形状与颜色 digraph是有向图,graph是无向图.要注意,->和–都表示图中的一条边,但是前者用于有向图中,而后者用于无向图中,不能混用. 代码示例 dia ...
- 02_clickhouse安装,卸载,启动/关闭服务,交互式命令(数据库创建,数据导入,查询),批模式数据导入,MySQL接口操作ClickHouse,DBeaver可视化工具安装与使用(学习笔记)
1 ClickHouse安装 安装文件清单 clickhouse-client-${version}.noarch.rpm clickhouse-common-static-dbg-${version ...
- PYRIT 强大的密码分析工具(可使用GPU分析)-学习笔记
优势: 可运用GPU的运算加速生成PMK 本身支持抓包获取四步五首过程,无需用Airodump抓包 也支持传统的读取airodump抓包获取四步握手的方式 只抓取WAP四次握手过程包 pyrit -r ...
- C51单片机学习笔记(一)——搭建开发环境及烧写工具
C51单片机学习笔记(一)--搭建开发环境及烧写工具 文章目录 C51单片机学习笔记(一)--搭建开发环境及烧写工具 1.搭建软件开发环境及使用(Keil uVision) 2.将程序下载到单片机(烧 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- IBatis.Net学习笔记系列文章
IBatis.Net是一个比较易用的ORM框架,使用起来较为方便.灵活. 在此记录我学习的过程,作为自己的一个总结. 1.IBatis.Net学习笔记一:开篇 2.IBatis.Net学习笔记二:下载 ...
- Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
Python3 爬虫学习笔记第九章 -- [数据储存系列 - 文件储存] 文章目录 [9.1]TXT 文本存储 [9.1.1]基本示例 [9.1.2]打开方式 [9.2]JSON 文件存储 [9.2. ...
- python爬虫学习笔记 1.9 (Handler处理器 和 自定义Opener)
python爬虫学习笔记 1.1(通用爬虫和聚焦爬虫) python爬虫学习笔记 1.2 ( HTTP和HTTPS ) python爬虫学习笔记 1.3 str和bytes的区别 python爬虫学习 ...
- 【毕业设计之python系列】基于Flask的在线学习笔记的设计与实现
基于Flask的在线学习笔记的设计与实现 摘要 在线学习笔记系统是一种为学生和教师提供在线学习和教学的平台.本文基于Flask框架,设计并实现了一个在线学习笔记系统.该系统支持用户注册.登录.创建课程 ...
最新文章
- Arduino学习笔记1---开发环境搭建
- cannot open line '/dev/tty.usbserial' for r/w resource busy
- JavaScript中的私有成员
- 极光推送 请检查参数合法性_极光(JG.US)牵手中国人寿数据中心,合作助推智能用户运营_行业动态...
- python request下载文件_Python3.4.3使用urllib.request下载文件带进度显示
- 用非递归方式实现二叉树后序遍历
- 清华毕业生做保姆,那又如何呢
- php计算1992年到现在,1992年以前 | 物质计算科学研究室 - Powered by MYPHP
- 汽车之家港股上市发行价定为176.3港元 募资35.6亿港元
- 你不知道的接口测试之简单的开始
- 关于使用jacob出现的异常
- 复选框式查询 例题租房子
- python中合法命名的变量名_「变量名」python中变量的命名以及使用 - 金橙教程网...
- 台式计算机睡眠状态耗电多吗,电脑休眠后,会不会耗电的?
- cygwin装linux系统,给cygwin安装命令package
- 蓝桥杯--算法提高 字符串跳步
- 在python中month函数的用法_python @classmethod 的使用场合
- Spring的运行原理
- React.js介绍
- mysql mybatis批量删除,Mybatis批量删除多表
热门文章
- 解决服装老手瓶颈——服装店铺软件全方面调控
- Android build.gradle配置文件
- Java 加解密技术系列之 PBE
- 走迷宫(maze) 难度**
- Git入门-本地仓库
- 汤姆大叔的博客 -【1】编写高质量JavaScript代码的基本要点
- invalid comparison: java.util.Date and java.lang.String“, “data“: null 时间格式转换异常
- Android-JNI2
- 爬虫---scrapy爬虫框架(详细+实战)
- linux正则表达式踩坑