PlantUML vs Mermaid vs Draw.io:选谁画什么图
不存在「最好」的图工具,只有最合适的那一个。这篇是经过几次切换后的总结。
一句话结论
| 类型 | 推荐 | 理由 |
|---|---|---|
| 时序图、类图、状态图、活动图、组件图、部署图、用例图 | PlantUML | 语法最完整,几乎所有 UML 图都有 |
| 流程图(if/else/while)、ER 图、甘特图、Git graph、架构速写 | Mermaid | 集成度高,GitHub/GitLab/Notion 都原生渲染 |
| 复杂架构图、需要像素级布局、自由拼图、嵌入图片、批量拖拽 | Draw.io (diagrams.net) | 所见即所得,布局能力最强 |
PlantUML 的强项
时序图是 PlantUML 的王牌。alt / else / opt / loop / par / critical 一套控制流语义清晰:
1 | @startuml |
类图也是。interface / enum / abstract 都能直接表达:
1 | @startuml |
还有组件图、部署图、用例图、对象图、状态图、时序图……PlantUML 对 UML 标准支持最完整。如果团队里需要画严格 UML,PlantUML 是首选。
Mermaid 的强项
Mermaid 集成度高是杀手锏 —— GitHub、GitLab、Notion、Obsidian、Hexo、Confluence、Slack 编辑框直接解析。Markdown 文档里直接写:
1 | flowchart LR |
1 | erDiagram |
PR 里加一段 Mermaid,GitHub 渲染,评审者不用切工具。
Draw.io 的强项
Draw.io 永远是「最后的兜底」。当 PlantUML / Mermaid 自动布局满足不了你、或者图太大需要拆开编辑、或者要和真实业务图标混排,上 Draw.io。
它的硬优势:
- 拖拽即所得,所见即所得
- 布局算法可以选择(树状、有机、环形)
- 字体、颜色、阴影自由控制
- 文件是 XML,可以进 git,但人肉 diff 困难
- 支持嵌入 SVG / PNG / base64 图片
但它不是文本优先的,每次改动都要开桌面工具 / Web 界面。评审流程里没有 PR diff,文档会慢慢腐烂。
三者对比表
| 维度 | PlantUML | Mermaid | Draw.io |
|---|---|---|---|
| 文本优先 | ✅ 完全 | ✅ 完全 | ❌ 二进制 XML |
| Git diff 友好 | ✅ | ✅ | ❌ |
| 集成到文档/平台 | ⚠️ 需要渲染器 | ✅ GitHub/GitLab/Notion 原生 | ❌ 单独打开 |
| UML 完整度 | ✅ 全 | ⚠️ 部分(无状态图、无部署图) | ⚠️ 拖出形状库不限定 UML 标准 |
| 流程图 / ER | ✅ 支持 | ✅ 主流用 | ✅ |
| 自动布局 | ✅ | ✅ | ✅ 可选 |
| 像素级控制 | ❌ | ❌ | ✅ |
| 渲染依赖 | ⚠️ Java 后端 / WASM | ⚠️ JS | ✅ 不依赖 |
| 大图可维护性 | ⚠️ 源码长 | ⚠️ 源码长 | ✅ UI 编辑 |
| 学习曲线 | 中(UML 基础) | 低 | 低 |
我的实操配方
- 写代码注释 / PR 描述 / 文档片段 → Mermaid(哪都能渲染)
- 画时序、类图、状态图、组件图、用例图 → PlantUML
- 老板或客户需要的「漂亮的架构图」→ Draw.io
- 一张图里同时出现上面两种 → Draw.io 当画布,PlantUML/Mermaid 当 source 通过插件插入
不要做的事
- 不要在 PlantUML 里硬塞自定义 SVG 形状。SVG 标签最后会被自动布局算法搞乱,反而不好维护。
- 不要把 Mermaid 当成「写流程图的唯一工具」。版本控制友好、集成度高是它的优势,当图需要细致空间布局时就换工具。
- 不要单独用 Draw.io 维护需要评审的图。每次改动没有 diff,没法追责。要么改成 PlantUML/Mermaid 文本,要么接受 Git 历史只看到 XML 的整段变化。
- 标题: PlantUML vs Mermaid vs Draw.io:选谁画什么图
- 作者: puml.online
- 创建于 : 2026-07-29 14:20:00
- 更新于 : 2026-08-14 21:34:29
- 链接: https://puml.online/blog/plantuml-vs-mermaid-drawio/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。