MCM520 ← 资料站首页 Graphviz(深度版) 打开交互阅读器 →

Graphviz(深度版)

自动布局的结构图/流程图引擎

一、一句话定位

自动布局的结构图/流程图引擎

二、为什么是它:设计哲学与底层逻辑

Graphviz 用 dot 文本描述有向/无向图,自动布局(dot/neato/circle),专画系统结构、流程图、决策树、状态机。哲学是"文本描述 → 自动布局",可版本控制、可复现、免费开源。代价是只擅长结构化图(不擅数据图)、美学靠调参、要学 dot 语法。适合论文里的"模型框架/流程"辅助图,与数据图库互补——它管"结构/层次",Matplotlib 管"数值"。## 三、渲染管线与可复现性推导
dot 源 SS(节点/边声明)→ 布局引擎(dot 用分层 Sugiyama 算法)→ 几何坐标 → 渲染。分层布局把图排成层级:

rank(v) 由依赖边决定 ⇒ 自上而下的层次图 \text{rank}(v)\ \text{由依赖边决定}\ \Rightarrow\ \text{自上而下的层次图}

文本即规格 → 可 diff、可复现,这是它和 Gephi(GUI)的关键区别;版本控制下结构图演进一目了然。## 四、适用场景

  • 画系统结构、流程图、决策树、状态机
  • 要清晰的逻辑/层次关系图
  • 程序自动生成图(dot 语言)

五、优点

  • ✅ 用 dot 文本描述,自动布局优雅
  • ✅ 适合结构/流程/树状图
  • ✅ 可版本控制、可复现
  • ✅ 免费开源

六、缺点

  • ⚠️ 只擅长结构化图,不擅数据图
  • ⚠️ 美学靠调参,默认一般
  • ⚠️ 要学 dot 语法

七、上手难度

中等

八、典型用途

  • 系统结构图
  • 算法/流程流程图
  • 决策树展示

九、与谁搭配

模型结构用 Graphviz;数据图用 Matplotlib

十、学习资源

  • Graphviz 官方文档
  • dot 语言速查

本篇来自《绘图软件横评(深度版)》· 数学建模学习资料站 MCM520

实战案例

Graphviz 关系图实战

场景:需画出算法流程图或决策树结构,手写坐标太麻烦。
任务:用 DOT 语言声明节点关系自动布局。

完整代码(dot)

digraph G {
  rankdir=TB;
  node [shape=box, style=rounded];
  start [label="开始"];
  A [label="读数据"];
  B [label="判断缺失?", shape=diamond];
  C [label="插值补全"];
  D [label="建模求解"];
  end [label="输出结果"];
  start -> A -> B;
  B -> C [label="有"];
  B -> D [label="无"];
  C -> D -> end;
}

运行效果

渲染结果:
[开始]→[读数据]→[判断缺失?]
├─有→[插值补全]┐
└─无──────────┴→[建模求解]→[输出结果]
Graphviz 自动计算坐标,改结构无需手动挪位置。