news 2026/10/8 10:30:25

Graphviz 16.1 DOT 语言十分钟上手:流程图状态机依赖图三个模板即拿即用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Graphviz 16.1 DOT 语言十分钟上手:流程图状态机依赖图三个模板即拿即用

Graphviz 16.1 DOT 语言十分钟上手:流程图状态机依赖图三个模板即拿即用

一、为什么"改文本就能改图"值得

拖拽式画图工具的问题:图一复杂就连不动了,改一个节点名要重新对齐八根线。Graphviz 的思路相反——用 DOT 文本描述节点和边,布局交给引擎自动算,图随文本进版本库,diff 都能看。

安装官方包后把 bin 加入 PATH,核验:

dot -V # dot - graphviz version 16.1.0 (20260904.0139)

二、流程图模板(本文所有图都是 dot.exe 真实渲染)

digraph flow { rankdir=TB; start [shape=oval, label="开始"]; check [shape=diamond, label="数据合法?"]; save [shape=box, label="入库"]; err [shape=box, label="返回错误"]; start -> check; check -> save [label="是"]; check -> err [label="否"]; save -> start [style=dashed, label="下一笔"]; }

出图一条命令:dot -Tpng flow.gv -o flow.png,换-Tsvg得矢量图。

三、状态机与依赖图

状态机用rankdir=LR横排 + 圆形节点,转移条件写在边上:

依赖图配style="rounded,filled"圆角填充 + 圆柱形数据存储,架构图立刻像样:

四、布局引擎怎么选

引擎适用场景
dot有向层次图(流程图/依赖)
neato / fdp无向力导向(网络/聚类)
circo环形拓扑
twopi放射结构

选错引擎的典型症状是"线全交叉"——有向图老实用 dot,无向网络换 neato。

五、三个进阶技巧

  1. 分组框:subgraph cluster_x { label="模块"; },cluster 前缀必须有;
  2. 上色:style=filled; fillcolor="#E8F4FF";
  3. 中文不乱码:文件存 UTF-8 +fontname="Microsoft YaHei"。

六、工程化场景

  • CI 里dot -Tsvg生成架构图随文档发布;
  • 数据库表关系、微服务调用链用脚本生成 DOT——图永远和事实一致;
  • 状态机画完直接当测试用例清单用(每条边一个用例)。

六、实战:给项目画一张带分组的流水线图

digraph ci { rankdir=LR; node [shape=box, style="rounded,filled", fillcolor="#E8F4FF", fontname="Microsoft YaHei"]; subgraph cluster_build { label="构建阶段"; fontname="Microsoft YaHei"; style=dashed; lint [label="代码检查"]; unit [label="单元测试"]; } subgraph cluster_release { label="发布阶段"; fontname="Microsoft YaHei"; style=dashed; pkg [label="打包"]; dep [label="部署"]; } lint -> unit -> pkg -> dep; dep -> unit [label="失败回滚", color=red, constraint=false]; }

两个要点:cluster_前缀把相关节点框进虚线分组;constraint=false让回滚边不参与层次计算,避免整张图被拉歪。

七、什么时候不该用 Graphviz

单张营销海报、需要精确像素级排版的场景,图形工具更合适。Graphviz 的甜区是结构化、会频繁变更、由数据驱动的图——只要节点和边能从代码或数据里生成,图就能跟着事实走。

配套完整工程

Graphviz 16.1.0 图结构可视化工具 Windows x64 官方安装版+DOT语言入门教程

官方安装包与全部模板源码(含本文三张图的 .gv 文件)都在工程包里。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 10:30:06

DoS攻击源码实战解析:从攻击原理到防护验证

简介:这是一份面向网络安全学习者、在校学生及安全测试人员的DOS拒绝服务攻击实验源代码,用于从代码层面理解网络攻击的常见手法与防御思路。资源共6个文件,以C源文件为核心,附带Visual C工程所需的项目文件(.dsp、.ds…

作者头像 李华
网站建设 2026/10/8 10:29:30

AI赋能软件开发基座:汽车软件智能化研发的工程化路径解析

汽车软件这几年最直观的变化,就是代码量涨得太快了。智能座舱、域控制器、自动驾驶,随便一个量产项目的软件规模都是千万行级别,OTA迭代从季度一次变成月度一次,研发团队要同时应对车型多、版本杂、周期短三座大山。光庭信息一直做…

作者头像 李华
网站建设 2026/10/8 10:28:30

脚本PASS系统读全零:AHCI、LBA与MBR链路排查与修复

1. 问题现场还原:脚本说 PASS,系统却读出一片零1.1 这个现象到底长什么样先把这个场景描述清楚,因为很多人第一次遇到时会怀疑人生。你写了一个设备老化测试脚本,或者一个批量校验脚本,跑完以后脚本自己打印了一行PASS…

作者头像 李华
网站建设 2026/10/8 10:28:10

WorkBuddy六行业实战案例拆解:从对话问答到可复用工作台

最近有朋友在社群里问我:大家都在用 WorkBuddy 做什么?我愣了一下,因为这个问题背后通常还藏着一句话——"我也装了,但实在不知道拿它干嘛。"这其实是很多 AI 工作台类工具最真实的处境:工具谁都会装&#x…

作者头像 李华
网站建设 2026/10/8 10:26:20

AI Agent工程实现七要素与七个决策点:从架构设计到落地实践

1. 从七个零件到七个岔路口:AI Agent 工程实现的底层逻辑聊 AI Agent 的人很多,但真正动手搭过一套能跑通、能维护、能扩展的 Agent 系统的人,往往会有一种共同的感受:这东西拆开看每个零件都不复杂,拼在一起却处处是坑…

作者头像 李华
网站建设 2026/10/8 10:26:12

纳采问名定佳期:读懂中国传统订婚文化与新中式落地

我见过不少朋友把“订婚”理解成摆一桌酒、拍一组照、然后把请柬群发出去。但如果把镜头拉回一千多年前那套正在运行的婚礼制度,会发现事情要复杂、也庄重得多。中国传统订婚文化里,“纳采”是男方第一次正式上门提亲,“问名”是交换双方生辰…

作者头像 李华