Mermaid 能成为默认的代码即图表工具,靠的是一个竞争对手都做不到的功能:在 GitHub 和 GitLab 的 markdown 里原生渲染。写一个围栏代码块,它就变成 README、wiki 或 issue 里的图表。不需要渲染步骤、不需要外部服务、不需要导出图片。内联的开发者文档,没有比它更省事的了。
但 Mermaid 有实实在在的局限。布局引擎在节点超过十几个的图表上会产出别扭的结果。图表类型的覆盖——虽然不错——到正式 UML、C4 模型或部署图这里就停了。而且如果你需要精确控制样式和位置,Mermaid "基本全自动"的路子可能让人抓狂。下面六款替代品,针对这些取舍的不同组合给出了方案。
选 Mermaid 替代品时该看什么
在比较工具之前,先想清楚 Mermaid 的哪些局限对你的工作流真正重要。
布局质量。 这是 Mermaid 最大的软肋。节点多或关系复杂的图表,自动布局可能缠成一团,很难读。有些替代品在布局引擎上砸了重注。
图表类型覆盖。 Mermaid 覆盖流程图、时序图、ER 图、甘特图、类图、状态图、饼图等。但缺网络拓扑、部署图、C4 模型和更深的 UML 支持。如果你需要的类型 Mermaid 没有,看 PlantUML 或 draw.io。
渲染集成。 Mermaid 的杀手锏是 GitHub/GitLab 原生渲染。每个替代品都至少要加一步——本地服务器、一条 CLI 命令、一个 CI 任务。先想清楚这对你重不重要。
语法顺手程度。 Mermaid 受 JavaScript 启发的语法对 Web 开发者很友好。替代品的语法哲学各不相同——类 Java(PlantUML)、类 Go(D2)、或者声明式配置(D2、Structurizr)。
什么时候不该离开 Mermaid
不是每一次搜索 Mermaid 替代品都应该以迁移结束。Mermaid 有一个很难替代的优势:它直接出现在开发者写文字、审文字的地方。
如果你的图表不大,主要是流程图或时序图,而且住在 GitHub Markdown 里,Mermaid 依然很难被打败。正确动作可能不是换工具,而是改好命名、把大图拆成小图,或者在 CI 里加渲染检查。
真正该找替代品的时候,是痛点变成结构性的:布局已经不可读,UML 需求超出 Mermaid 覆盖范围,评审者需要精确视觉控制,或者非工程师也要编辑图。换句话说,当图表已经长到文本承载不了时,再离开 Mermaid,而不是因为新工具看起来更顺眼。
1. PlantUML
类型: 文本转图表(Java)
GitHub 集成: 通过插件或 CI 渲染步骤
图表类型: 全部 14 种 UML,外加线框图、思维导图、甘特图、JSON/YAML 可视化
PlantUML 是重量级选手——只要有某种图表记法,PlantUML 大概率支持。带完整构造型支持的类图、带激活条和注释的时序图、组件图、部署图、时序图——在所有基于文本的工具里,它的 UML 覆盖是最深的。
语法比 Mermaid 啰嗦,但表现力更强。你可以精细控制颜色、线型、布局方向和构造型。代价在渲染:PlantUML 需要 Java 和 Graphviz 才能渲染。大多数团队用公共的 plantuml.com 服务器、Docker 容器,或者带 PlantUML CLI 的 CI 步骤。VS Code 和 JetBrains 插件能在编辑器里透明地处理这件事。
对 Java/企业团队来说,PlantUML 往往已经在技术栈里了。对 Node.js 或 Python 团队,它引入了一个 Java 依赖。如果你需要正式 UML,而且愿意搭好渲染管道,PlantUML 就是 Mermaid 之外最好的选择。
最适合: 需要以文本、可版本控制的格式做全面 UML 覆盖的团队。
2. D2
类型: 文本转图表(Go)
GitHub 集成: 通过 CLI 渲染为 SVG/PNG
图表类型: 流程图、时序图、ER 图、类图、网格、网络图、SQL 表等
D2 是代码即图表领域最新的主要玩家,它的招牌是布局质量。约束式布局引擎产出的图表,通常比 Mermaid 或 PlantUML 更干净、更好读——尤其是在节点和关系都很多的复杂图表上。当 Mermaid 的布局给你一团乱线、而你不想手动摆位置的时候,就该拿出 D2。
语法干净,受 Go 启发——连非开发者都看得懂。它看起来更像声明式配置而不是代码,这让它很适合不是每个人都天天写代码的团队。D2 的时序图读起来几乎像结构化的英文。
局限:D2 比较新,生态还小。编辑器插件更少、CI 集成更少,也没有 GitHub 原生渲染。图表类型覆盖比 PlantUML 窄,但覆盖了开发者最常见的那几种需求。渲染需要 D2 CLI(一个 Go 二进制,很好装)。
最适合: 把布局质量放在第一位、能接受一个较年轻生态的团队。
3. Graphviz
类型: 文本转图(C)
GitHub 集成: 通过构建步骤
图表类型: 有向/无向图、网络图、依赖图
Graphviz 是这份列表里最老的工具——90 年代就有了——而且它最擅长的事至今无人能敌:自动布局大型复杂图。Mermaid 专注的是手工打磨、规模可控的图表。Graphviz 专注的是大到没法手工布局的图——50 个节点、200 条边,布局依然清晰可读。
DOT 语言描述节点和边,附带可选样式。然后 Graphviz 用多种算法(层次、力导向、径向、环形)计算布局。改一行就能切换算法,得到完全不同的布局。
Graphviz 不是通用的制图工具。它不画流程图、时序图或 UML——它只画图。但对付依赖图、调用图、网络拓扑和转换极多的状态机,没有别的工具在规模上能比。
最适合: 自动生成、大到没法手工布局的大型图。
4. draw.io
类型: 所见即所得 + 文本导出
GitHub 集成: 通过 VS Code 扩展或文件导出
图表类型: UML、BPMN、网络图、ER 图、云架构(AWS/Azure/GCP)等
draw.io 不是代码即图表,但它值得出现在这份列表里,因为很多开发者先用 Mermaid 画简单图表,最终都会需要图标准确的云架构图或正式技术文档。draw.io 的图形库是任何价位里最深的——AWS、GCP、Azure、Kubernetes、Cisco,加上深度的 UML 覆盖。
VS Code 扩展让你不用离开编辑器就能编辑 .drawio 文件。格式是 XML——可以在 git 里 diff(乱,但可行),有些团队会把 .drawio 源文件和导出的 SVG 都入库。对需要精确放置图标的架构图,draw.io 是标准答案。
最适合: 正式的云架构和技术文档,尤其适合和 Mermaid 一起用——Mermaid 管内联文档。
5. CodePic
类型: 可视化 + AI(MCP)
GitHub 集成: 通过 MCP 接入 Claude/Cursor
图表类型: 流程图、时序图、ER 图、组织架构图、思维导图、线框图、泳道图
CodePic 走的是和文本工具完全不同的路子。它是一块手绘风格的无限白板,但它跟代码即图表沾边的功能是 MCP 整合——在 Claude 或 Cursor 里用自然语言描述一个图表,它就在画布上生成可编辑的图形。
这不是 Mermaid 意义上的文本转图表,但它解决的是同一个相关的问题:你脑子里有一个图表,你想赶紧把它放到画布上,又不想为此学图表语法。对已经在用 AI 编码工具的开发者来说,这是工作流的自然延伸。
代价是:没有可以版本控制的文本源。如果"代码即图表必须进 git"是硬性要求,就留在 Mermaid 或 PlantUML。如果从自然语言快速迭代更重要,CodePic 正好补上这个空缺。
最适合: 已经在用 Claude 或 Cursor、想要 AI 辅助制图又不想学图表语法的开发者。
6. Structurizr DSL
类型: 架构即代码(Java DSL)
GitHub 集成: 原生(文本格式)
图表类型: 仅 C4 模型(Context、Container、Component、Code)
Structurizr 是为 C4 模型量身打造的——也就是 Simon Brown 那套层级化的软件架构图方法。你用一个基于 Java 的 DSL 描述一次整个系统,Structurizr 就从这个单一模型生成多个图表视图。改一处关系,所有图表自动更新。
这种模型驱动的方式,和 Mermaid "每张图各画各的"的模型根本不同。搭建时前期的活更多,但它消除了图表漂移——也就是同一个系统的不同视图展示出不一致、相互矛盾的信息的问题。
它的范围刻意做得窄:只有 C4 模型。它是 C4 架构文档的最佳工具,但不是通用制图工具。
最适合: 已经采用 C4 模型、想要模型驱动、始终一致的架构图的团队。
快速对比
| 工具 | 类型 | 布局质量 | 图表深度 | GitHub 原生 | 最适合 |
|---|---|---|---|---|---|
| Mermaid | 文本转图表 | 好(小图)、一般(大图) | 好 | ✓ | README、内联文档 |
| PlantUML | 文本转图表 | 好 | 极好(UML) | 插件/CI | git 里的完整 UML |
| D2 | 文本转图表 | 极好 | 好 | 仅 CLI | 最佳自动布局 |
| Graphviz | 文本转图 | 极好(大图) | 窄 | 构建步骤 | 大型图 |
| draw.io | WYSIWYG + XML | 手动 | 极好 | VS Code 扩展 | 云架构 |
| CodePic | 可视化 + AI | 手动 + AI | 好 | MCP(Claude) | AI 辅助草图 |
| Structurizr | 架构 DSL | 自动 | 窄(C4) | 原生 | C4 模型文档 |
怎么选
大多数用 Mermaid 的团队,最后都会在它旁边至少再用一个替代品。怎么搭配,取决于 Mermaid 有什么没handle好:
如果 Mermaid 的布局在复杂图表上让你抓狂: 试试 D2。任何超过 10-12 个节点的图表,布局质量的差别都肉眼可见。PlantUML 处理复杂布局也比 Mermaid 好。
如果你需要 Mermaid 没有覆盖的图表类型: UML 用 PlantUML,C4 用 Structurizr,大型图用 Graphviz,云架构用 draw.io。
如果你完全不想学图表语法: CodePic 的 AI 路子——用话描述、得到可编辑图形——是语法门槛最低的路径。draw.io 的可视化编辑器是传统的替代方案。
如果你对内联文档用 Mermaid 挺满意,但正式文档需要更多: 架构图用 draw.io,UML 用 PlantUML。把两者的源文件连同 Mermaid 代码块一起入库。
相关阅读
- Mermaid vs PlantUML:哪个代码即图表工具更适合你的工作流? — 两款头部文本工具的深度对比。
- Mermaid vs draw.io (2026):代码即图表还是可视化编辑器? — 什么时候该转向可视化。
- Mermaid vs Lucidchart (2026) — 免费的代码即图表 vs 付费的可视化平台。
- 2026 年开发者最佳制图工具 — 面向开发者的工具汇总。
- draw.io vs Lucidchart (2026):定价、功能与怎么选 — 付费 vs 免费制图。


