使用 Mermaid 语法生成流程图、时序图、类图等,支持 PNG 和交互式 HTML 输出。
Mermaid Diagram 画图技能是一项面向实际任务的技能,主要用于使用 Mermaid 语法生成各类图表(流程图、时序图、甘特图、饼图等),支持 PNG 和 HTML 两种输出格式;格式一:PNG 图片(推荐用于分享/嵌入);
页面高度(像素);背景色( transparent , white。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
使用 Mermaid 语法生成各类图表(流程图、时序图、甘特图、饼图等),支持 PNG 和 HTML 两种输出格式。
mmdc -i input.mmd -o output.png -w <宽度> -H <高度> -b <背景色> -t <主题>
| 参数 | 说明 | 默认值 |
|---|---|---|
-i |
输入 .mmd 文件 |
必填 |
-o |
输出文件(.png / .svg / .pdf) |
必填 |
-w |
页面宽度(像素) | 800 |
-H |
页面高度(像素) | 600 |
-b |
背景色(transparent, white, #F0F0F0) |
white |
-t |
主题(default, forest, dark, neutral) |
default |
-s |
缩放比例 | 1 |
-c |
JSON 配置文件 | 无 |
工作流程:
.mmd 文件mmdc 命令生成 PNGMermaid Diagram
| 原则 | 说明 |
|---|---|
| 避免极端比例 | 宽高比不超过 3:1 或 1:3 |
| 流程图方向选择 | 节点 ≤6 个横向用 LR,≥7 个纵向用 TD |
| 控制单层节点数 | 同一层级不超过 5-6 个节点 |
| 复杂图表拆分 | 超过 15 个节点考虑拆成多张图 |
| 方向 | 关键字 | 适用场景 |
|---|---|---|
| 上→下 | TD / TB |
层级结构、决策树、组织架构 |
| 左→右 | LR |
流程/管道、时间线式流程 |
| 下→上 | BT |
自底向上的构建过程 |
| 右→左 | RL |
回溯/反向流程 |
| 图表类型 | 推荐宽度 | 推荐高度 | 说明 |
|---|---|---|---|
| Flowchart (TD, ≤8 节点) | 800 | 600 | 标准 4:3 |
| Flowchart (LR, ≤6 节点) | 1000 | 500 | 横向 2:1 |
| Flowchart (大型 >10 节点) | 1200 | 800 | 加大画布 |
| Sequence Diagram (≤5 参与者) | 800 | 600 | 标准 |
| Sequence Diagram (>5 参与者) | 1200 | 600 | 加宽 |
| Class Diagram | 1000 | 700 | 略宽 |
| State Diagram | 800 | 600 | 标准 |
| ER Diagram | 1000 | 700 | 略宽 |
| Gantt Chart (≤10 任务) | 1000 | 500 | 横向 2:1 |
| Gantt Chart (>10 任务) | 1200 | 700 | 加高 |
| Pie Chart | 700 | 700 | 1:1 正方形 |
| Mindmap | 1000 | 700 | 略宽 |
| Timeline (≤5 时期) | 1000 | 500 | 横向 |
| Timeline (>5 时期) | 1200 | 600 | 加宽 |
| Git Graph | 1000 | 500 | 横向 |
| Sankey Diagram | 1000 | 600 | 略宽 |
| XY Chart | 800 | 600 | 标准 4:3 |
| Quadrant Chart | 700 | 700 | 1:1 正方形 |
| User Journey | 1000 | 500 | 横向 |
| Block Diagram | 800 | 600 | 标准 |
使用场景: 业务流程、决策树、系统架构、算法步骤
语法模板:
flowchart TD
A[开始] --> B{条件判断}
B -->|是| C[执行操作A]
B -->|否| D[执行操作B]
C --> E[结束]
D --> E
节点形状:
| 语法 | 形状 | 用途 |
|---|---|---|
A[文本] |
矩形 | 普通步骤 |
A(文本) |
圆角矩形 | 普通步骤(柔和) |
A{文本} |
菱形 | 条件判断 |
A((文本)) |
圆形 | 起止点 |
A([文本]) |
体育场形 | 起止点(替代) |
A[[文本]] |
子程序 | 子流程调用 |
A[(文本)] |
圆柱体 | 数据库 |
A>文本] |
旗帜形 | 标记/信号 |
A{{文本}} |
六边形 | 准备/条件 |
A[/文本/] |
平行四边形 | 输入/输出 |
连线类型:
| 语法 | 说明 |
|---|---|
--> |
带箭头实线 |
--- |
无箭头实线 |
-.-> |
带箭头虚线 |
==> |
带箭头粗线 |
--文字--> |
带标签的线 |
| `--> | 文字 |
完整示例:
flowchart TD
A([开始]) --> B[/输入数据/]
B --> C{数据有效?}
C -->|有效| D[处理数据]
C -->|无效| E[显示错误]
E --> B
D --> F[(保存到数据库)]
F --> G([结束])
推荐尺寸: -w 800 -H 600(TD 方向),-w 1000 -H 500(LR 方向)
⚠️ 常见陷阱:
end 是保留字,作为节点文字需用引号包裹:A["end"]使用场景: API 调用流程、微服务交互、协议握手、系统通信
语法模板:
sequenceDiagram
participant A as 客户端
participant B as 服务器
participant C as 数据库
A->>B: 发送请求
B->>C: 查询数据
C-->>B: 返回结果
B-->>A: 响应数据
消息类型:
| 语法 | 说明 |
|---|---|
-> |
无箭头实线 |
--> |
无箭头虚线 |
->> |
带箭头实线 |
-->> |
带箭头虚线 |
-x |
带叉实线(失败) |
--x |
带叉虚线 |
-) |
带开放箭头实线(异步) |
--) |
带开放箭头虚线 |
高级功能:
sequenceDiagram
participant U as 用户
participant S as 服务器
participant DB as 数据库
U->>S: 登录请求
activate S
S->>DB: 验证用户
activate DB
DB-->>S: 验证通过
deactivate DB
alt 验证成功
S-->>U: 返回 Token
else 验证失败
S-->>U: 返回 401
end
deactivate S
Note over U,S: 后续请求需携带 Token
loop 每隔5分钟
U->>S: 心跳检查
S-->>U: OK
end
关键语法:
activate/deactivate — 激活条(显示处理中)alt/else/end — 条件分支loop/end — 循环par/and/end — 并行处理Note over A,B: — 跨参与者的备注rect rgb(200,220,255)/end — 高亮区域推荐尺寸: -w 800 -H 600(≤5 参与者),-w 1200 -H 600(>5 参与者)
⚠️ 常见陷阱:
end 是保留字,用引号包裹:participant E as "End Service"使用场景: 面向对象设计、系统架构、数据模型
语法模板:
classDiagram
class Animal {
+String name
+int age
+makeSound() void
}
class Dog {
+fetch() void
}
class Cat {
+purr() void
}
Animal <|-- Dog
Animal <|-- Cat
关系类型:
| 语法 | 关系 | 说明 |
|---|---|---|
<|-- |
继承 | 实线三角箭头 |
*-- |
组合 | 实线实心菱形 |
o-- |
聚合 | 实线空心菱形 |
--> |
关联 | 实线箭头 |
..> |
依赖 | 虚线箭头 |
<|.. |
实现 | 虚线三角箭头 |
-- |
链接 | 实线 |
可见性修饰符:
| 符号 | 含义 |
|---|---|
+ |
public |
- |
private |
# |
protected |
~ |
package/internal |
完整示例:
classDiagram
class Vehicle {
<>
+String brand
+int speed
+start() void
+stop() void
}
class Car {
+int doors
+openTrunk() void
}
class Motorcycle {
+bool hasSidecar
}
class Engine {
+int horsepower
+String fuelType
}
Vehicle <|-- Car
Vehicle <|-- Motorcycle
Car *-- Engine : has
Motorcycle *-- Engine : has
推荐尺寸: -w 1000 -H 700
使用场景: 状态机、对象生命周期、协议状态
语法模板:
stateDiagram-v2
[*] --> Idle
Idle --> Processing : 收到请求
Processing --> Success : 处理成功
Processing --> Error : 处理失败
Success --> [*]
Error --> Idle : 重试
高级功能:
stateDiagram-v2
[*] --> Active
state Active {
[*] --> Running
Running --> Paused : 暂停
Paused --> Running : 继续
}
Active --> Inactive : 关闭
Inactive --> Active : 启动
Inactive --> [*]
state fork_state <>
Active --> fork_state
fork_state --> State2
fork_state --> State3
state join_state <>
State2 --> join_state
State3 --> join_state
join_state --> Done
state Decision <>
Done --> Decision
Decision --> Success : 通过
Decision --> Failure : 失败
关键语法:
[*] — 起始/终止状态state Name { } — 复合状态(嵌套)<> / <> — 并行分叉/汇合<> — 选择节点note right/left of State — 备注推荐尺寸: -w 800 -H 600
使用场景: 数据库设计、数据模型、实体关系
语法模板:
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : "is in"
CUSTOMER {
int id PK
string name
string email
}
ORDER {
int id PK
date created
string status
}
关系符号:
| 左侧 | 右侧 | 含义 |
|---|---|---|
|| |
|| |
恰好一个 |
|| |
o{ |
零或多个 |
|| |
|{ |
一或多个 |
o| |
o{ |
零或一对零或多 |
完整格式:
属性语法: type name PK/FK/UK "注释"
推荐尺寸: -w 1000 -H 700
⚠️ 注意: 实体名建议大写(如 CUSTOMER),关系标签有空格需用引号
使用场景: 项目进度、任务规划、里程碑跟踪
语法模板:
gantt
title 项目开发计划
dateFormat YYYY-MM-DD
axisFormat %m/%d
section 需求阶段
需求分析 :done, req1, 2026-01-01, 10d
需求评审 :done, req2, after req1, 3d
section 开发阶段
后端开发 :active, dev1, after req2, 20d
前端开发 :dev2, after req2, 15d
API 联调 :dev3, after dev1, 5d
section 测试阶段
功能测试 :test1, after dev3, 10d
上线发布 :milestone, after test1, 0d
任务标签:
| 标签 | 说明 |
|---|---|
done |
已完成(灰色) |
active |
进行中(蓝色) |
crit |
关键路径(红色) |
milestone |
里程碑(菱形标记) |
日期格式:
| 格式 | 说明 |
|---|---|
YYYY-MM-DD |
标准日期 |
after taskID |
在某任务之后 |
10d |
持续 10 天 |
5h |
持续 5 小时 |
推荐尺寸: -w 1000 -H 500(≤10 任务),-w 1200 -H 700(>10 任务)
⚠️ 常见陷阱:
dateFormat 和 axisFormat 要区分(输入格式 vs 显示格式)excludes weekends 可排除周末使用场景: 比例分布、市场份额、资源分配
语法模板:
pie showData
title 编程语言使用占比
"Python" : 35
"JavaScript" : 30
"Java" : 20
"Go" : 10
"其他" : 5
关键语法:
pie — 声明饼图showData — (可选)显示数值title — (可选)标题"标签" : 数值 — 数据项(数值必须 >0)推荐尺寸: -w 700 -H 700(正方形效果最佳)
⚠️ 注意: 不支持负数值,切片按标签顺序顺时针排列
使用场景: 知识梳理、头脑风暴、概念拆解
语法模板:
mindmap
root((中心主题))
分支1
子主题A
子主题B
分支2
子主题C
细节1
细节2
分支3
子主题D
节点形状:
| 语法 | 形状 |
|---|---|
id |
默认(矩形) |
id[文字] |
方形 |
id(文字) |
圆角矩形 |
id((文字)) |
圆形 |
id))文字(( |
爆炸形(Bang) |
id)文字( |
云朵形 |
id{{文字}} |
六边形 |
关键规则:
推荐尺寸: -w 1000 -H 700
⚠️ 常见陷阱:
使用场景: 历史事件、项目里程碑、版本发布记录
语法模板:
timeline
title 项目发展历程
2023 : 项目启动
: 组建团队
2024 : 发布 v1.0
: 获得首批用户
2025 : 发布 v2.0
: 用户突破 10 万
分组语法:
timeline
title 技术演进
section 早期
2020 : HTML5 普及
2021 : 移动优先
section 成熟期
2022 : AI 集成
2023 : 全面云原生
关键规则:
时间点 : 事件 格式: 事件section 对时间点分组推荐尺寸: -w 1000 -H 500(≤5 时期),-w 1200 -H 600(>5 时期)
使用场景: Git 分支策略、版本管理流程、CI/CD 流水线
语法模板:
gitGraph
commit
commit
branch develop
checkout develop
commit
commit
checkout main
merge develop
commit
branch feature
checkout feature
commit
checkout develop
merge feature
checkout main
merge develop
commit tag:"v1.0"
关键命令:
| 命令 | 说明 |
|---|---|
commit |
提交(可选 id: "msg" type: NORMAL/REVERSE/HIGHLIGHT) |
branch name |
创建并切换分支 |
checkout name |
切换分支(也可用 switch) |
merge name |
合并分支 |
commit tag:"v1.0" |
带标签的提交 |
推荐尺寸: -w 1000 -H 500
使用场景: 能量流向、资金流转、用户路径
语法模板:
sankey-beta 来源A,目标X,50 来源A,目标Y,30 来源B,目标X,20 来源B,目标Z,40 目标X,终点,70 目标Y,终点,30 目标Z,终点,40
关键规则:
源,目标,数值推荐尺寸: -w 1000 -H 600
⚠️ 实验性功能: 语法可能在未来版本变化
使用场景: 数据趋势、柱状图、折线图、数据对比
语法模板(柱状图 + 折线图):
xychart-beta
title "月度销售数据"
x-axis [Jan, Feb, Mar, Apr, May, Jun]
y-axis "销售额(万元)" 0 --> 100
bar [30, 45, 60, 55, 70, 85]
line [30, 45, 60, 55, 70, 85]
语法要素:
| 元素 | 说明 |
|---|---|
xychart-beta |
声明(可加 horizontal) |
title "标题" |
标题 |
x-axis [cat1, cat2, ...] |
X 轴分类 |
x-axis "title" min --> max |
X 轴数值范围 |
y-axis "title" min --> max |
Y 轴范围 |
bar [数据] |
柱状图数据 |
line [数据] |
折线图数据 |
推荐尺寸: -w 800 -H 600
使用场景: 系统架构、组件关系、层级结构
语法模板:
block-beta
columns 3
A["前端"] B["API 网关"] C["后端服务"]
space D["数据库"] space
关键语法:
| 语法 | 说明 |
|---|---|
columns N |
设置列数 |
A["文字"] |
普通块 |
A("文字") |
圆角块 |
A(("文字")) |
圆形块 |
A{{"文字"}} |
六边形块 |
space |
空占位 |
A --> B |
连线 |
A:N |
块跨 N 列 |
推荐尺寸: -w 800 -H 600
⚠️ 实验性功能
使用场景: 优先级矩阵、SWOT 分析、竞品对比
语法模板:
quadrantChart
title 技术选型评估
x-axis 学习成本低 --> 学习成本高
y-axis 功能弱 --> 功能强
quadrant-1 首选方案
quadrant-2 值得投入
quadrant-3 谨慎考虑
quadrant-4 暂不推荐
React: [0.8, 0.9]
Vue: [0.4, 0.7]
jQuery: [0.2, 0.3]
Angular: [0.9, 0.8]
关键语法:
quadrant-1 到 quadrant-4:四个象限的标签(1=右上,2=左上,3=左下,4=右下)推荐尺寸: -w 700 -H 700(正方形)
使用场景: 用户体验分析、服务蓝图、流程痛点
语法模板:
journey
title 用户购物体验
section 浏览
访问首页: 5: 用户
搜索商品: 4: 用户
查看详情: 4: 用户
section 购买
加入购物车: 3: 用户
填写地址: 2: 用户
支付: 3: 用户, 系统
section 售后
等待发货: 3: 用户
收到商品: 5: 用户
关键语法:
任务名: 评分: 参与者 (评分 1-5,5 最好)section 分段推荐尺寸: -w 1000 -H 500
Mermaid 内置 4 种主题,通过 mmdc -t 或 frontmatter 设置:
| 主题 | 说明 | 适用场景 |
|---|---|---|
default |
默认蓝色调 | 通用 |
forest |
绿色调 | 自然/环保主题 |
dark |
暗色背景 | 暗色文档/演示 |
neutral |
黑白灰 | 正式文档/打印 |
Frontmatter 方式设置主题:
---
config:
theme: forest
---
flowchart TD
A --> B
| 情况 | 策略 |
|---|---|
| 流程图节点 >15 | 按阶段拆成 2-3 张子流程图 |
| 时序图参与者 >8 | 按场景拆分(如登录流程、数据流程) |
| 类图类 >10 | 按模块/包拆分 |
| ER 图实体 >8 | 按业务域拆分 |
| 思维导图 >4 层 | 按主分支拆成独立思维导图 |
# 基本 PNG 生成 mmdc -i diagram.mmd -o diagram.png # 指定尺寸和背景 mmdc -i diagram.mmd -o diagram.png -w 1000 -H 700 -b white # 透明背景(适合嵌入深色页面) mmdc -i diagram.mmd -o diagram.png -b transparent # 使用深色主题 mmdc -i diagram.mmd -o diagram.png -t dark -b "#1a1a2e" # 生成 SVG(矢量,可缩放) mmdc -i diagram.mmd -o diagram.svg # 生成 PDF mmdc -i diagram.mmd -o diagram.pdf -f # 使用配置文件 mmdc -i diagram.mmd -o diagram.png -c config.json # 高清输出(2 倍缩放) mmdc -i diagram.mmd -o diagram.png -s 2
配置文件示例(config.json):
{
"theme": "default",
"flowchart": {
"curve": "basis",
"padding": 15
},
"sequence": {
"actorMargin": 50,
"messageMargin": 35
}
}
end: 在 Flowchart 和 Sequence Diagram 中,end 可能破坏解析,用引号包裹 "end" 或 (end) / [end](){}[] 等符号时需用引号-beta,语法可能变化相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习