Mermaid扩展图表类型:从饼图到架构图
本文全面介绍了Mermaid支持的多种扩展图表类型,包括饼图、象限图、思维导图、需求图、C4架构图、ER图、Sankey图和XY图表。每种图表类型都详细讲解了其语法结构、配置选项和实际应用场景,为开发者提供了从基础数据可视化到复杂系统架构设计的完整解决方案。
饼图与象限图数据可视化
在数据可视化领域,饼图和象限图是两种非常重要的图表类型,它们分别适用于不同的分析场景。Mermaid作为强大的文本转图表工具,为这两种图表提供了简洁而强大的语法支持,让开发者能够轻松创建专业级的数据可视化图表。
饼图:比例关系的直观展示
饼图是最经典的比例可视化工具,通过圆形分割来展示各部分占整体的比例关系。Mermaid的饼图语法极其简洁,只需几行文本即可生成精美的饼状图。
基础语法结构:
pie
title 月度支出分布
"住房" : 2500
"食品" : 1200
"交通" : 800
"娱乐" : 500
"其他" : 300
高级配置选项:
Mermaid饼图支持丰富的配置参数,让用户能够精细控制图表的显示效果:
| 配置参数 | 描述 | 默认值 |
|---|---|---|
| textPosition | 标签位置(0.0-1.0,0为中心,1为边缘) | 0.75 |
| outerStrokeWidth | 外边框宽度 | 2px |
显示数据值示例:
pie showData
title 项目时间分配(小时)
"需求分析" : 45.5
"开发" : 120.25
"测试" : 35.75
"部署" : 18.5
象限图:二维数据分析的强大工具
象限图(Quadrant Chart)是战略分析中不可或缺的工具,它将数据点分布在四个象限中,帮助识别模式、优先级和战略方向。
基础象限图语法:
quadrantChart
title 产品功能优先级分析
x-axis 低价值 --> 高价值
y-axis 低成本 --> 高成本
quadrant-1 优先开发
quadrant-2 优化提升
quadrant-3 暂缓考虑
quadrant-4 重新评估
"登录功能" : [0.8, 0.3]
"支付系统" : [0.9, 0.7]
"消息推送" : [0.4, 0.2]
"数据分析" : [0.6, 0.8]
象限图配置参数详解:
Mermaid象限图提供了全面的配置选项,下表展示了主要的配置参数:
| 参数 | 描述 | 默认值 |
|---|---|---|
| chartWidth | 图表宽度 | 500 |
| chartHeight | 图表高度 | 500 |
| titleFontSize | 标题字体大小 | 20 |
| pointRadius | 数据点半径 | 5 |
| quadrantLabelFontSize | 象限标签字体大小 | 16 |
高级样式定制示例:
quadrantChart
title 团队技能矩阵分析
x-axis 初级 --> 专家级
y-axis 低频使用 --> 高频使用
quadrant-1 核心专家
quadrant-2 潜力人才
quadrant-3 基础技能
quadrant-4 专业辅助
"前端开发" : [0.85, 0.9] radius: 8
"后端开发" : [0.75, 0.8] color: #ff6b6b
"数据库" : [0.6, 0.7] radius: 10, stroke-width: 2px
"DevOps" : [0.4, 0.3] color: #4ecdc4
实际应用场景对比
为了帮助读者更好地选择适合的图表类型,下表对比了饼图和象限图的主要应用场景:
| 特性 | 饼图 | 象限图 |
|---|---|---|
| 数据维度 | 单维比例数据 | 二维坐标数据 |
| 适用场景 | 占比分析、组成结构 | 战略分析、优先级排序 |
| 优势 | 直观显示比例关系 | 识别模式和聚类 |
| 限制 | 不适合过多分类 | 需要明确的坐标维度 |
技术实现要点:
-
数据格式要求:
- 饼图:数值必须为正数,支持两位小数
- 象限图:坐标值范围0-1,支持精确到小数点后多位
-
主题定制: 两种图表都支持完整的主题变量定制,包括颜色、字体、边框等样式属性
-
响应式设计: Mermaid图表自动适应容器大小,确保在不同设备上都能良好显示
通过Mermaid的简洁语法,开发者可以快速创建这两种专业级的数据可视化图表,无需复杂的图形设计工具,真正实现了"文本即图表"的开发理念。无论是简单的比例展示还是复杂的战略分析,Mermaid都能提供优雅而强大的解决方案。
思维导图与需求图绘制
Mermaid作为一款强大的文本转图表工具,不仅支持基础的流程图、时序图等常见图表类型,还提供了思维导图和需求图这两种专业级的可视化工具。这两种图表在项目规划、需求分析和系统设计中发挥着重要作用。
思维导图(Mindmap)的语法与特性
思维导图通过层次结构展示信息之间的关系,Mermaid的思维导图语法简洁直观,主要依赖缩进来定义层级关系:
基础语法结构
mindmap
root((Mermaid思维导图))
核心特性
文本驱动
多形状支持
图标集成
应用场景
项目规划
知识整理
头脑风暴
优势
易于修改
版本控制友好
跨平台兼容
节点形状多样化
Mermaid支持多种节点形状,为思维导图增添丰富的视觉表现力:
| 形状类型 | 语法示例 | 渲染效果 |
|---|---|---|
| 方形节点 | id[文本] |
直角矩形 |
| 圆角矩形 | id(文本) |
圆角矩形 |
| 圆形节点 | id((文本)) |
圆形 |
| 云形节点 | id)文本( |
云朵形状 |
| 爆炸形 | id))文本(( |
爆炸效果 |
| 六边形 | id{{文本}} |
六边形 |
高级功能特性
图标集成功能允许为节点添加视觉标识:
mindmap
项目管理系统
需求分析
::icon(fa fa-clipboard-list)
开发实施
::icon(fa fa-code)
测试验证
::icon(fa fa-check-circle)
部署上线
::icon(fa fa-rocket)
Markdown文本支持使得节点内容更加丰富:
mindmap
root["`**核心功能**<br/>支持多行文本和<br/>*格式化*内容`"]
子节点1["`包含`**粗体**`和`*斜体*`文本`"]
子节点2[普通文本节点]
需求图(Requirement Diagram)的专业应用
需求图基于SysML v1.6标准,专门用于可视化需求及其相互关系,在系统工程和软件开发中非常重要。
需求定义语法
需求定义包含类型、ID、文本、风险和验证方法等多个属性:
requirementDiagram
requirement 核心需求 {
id: REQ-001
text: 系统必须支持用户身份验证功能
risk: High
verifymethod: Test
}
functionalRequirement 性能需求 {
id: REQ-002
text: 响应时间应小于200毫秒
risk: Medium
verifymethod: Demonstration
}
interfaceRequirement 接口需求 {
id: REQ-003
text: 必须提供RESTful API接口
risk: Low
verifymethod: Analysis
}
需求类型体系
Mermaid支持六种标准需求类型,满足不同领域的建模需求:
| 需求类型 | 语法关键字 | 适用场景 |
|---|---|---|
| 普通需求 | requirement |
通用需求定义 |
| 功能需求 | functionalRequirement |
系统功能要求 |
| 性能需求 | performanceRequirement |
性能指标要求 |
| 接口需求 | interfaceRequirement |
系统接口规范 |
| 物理需求 | physicalRequirement |
物理特性要求 |
| 设计约束 | designConstraint |
设计限制条件 |
关系建模能力
需求图支持七种标准关系类型,完整覆盖需求管理的各种场景:
requirementDiagram
requirement 系统需求 {
id: SYS-001
text: 开发完整的电商平台
risk: High
verifymethod: Test
}
functionalRequirement 用户管理 {
id: FUN-001
text: 实现用户注册登录功能
risk: Medium
verifymethod: Inspection
}
element 开发团队 {
type: ScrumTeam
docRef: teams/dev-team
}
element 测试用例 {
type: TestSuite
docRef: tests/user-auth
}
开发团队 - satisfies -> 用户管理
系统需求 - contains -> 用户管理
测试用例 - verifies -> 用户管理
元素与文档关联
除了需求本身,还可以定义相关元素并关联文档引用:
requirementDiagram
element 设计文档 {
type: TechnicalSpec
docRef: docs/system-design.md
}
element 用户故事 {
type: UserStory
docRef: backlog/US-123
}
element 测试计划 {
type: TestPlan
docRef: quality/test-plan.docx
}
设计文档 - traces -> 用户故事
测试计划 - verifies -> 用户故事
实际应用场景示例
软件项目需求管理
requirementDiagram
requirement 电商平台 {
id: PROJ-001
text: 构建完整的B2C电商解决方案
risk: High
verifymethod: Demonstration
}
functionalRequirement 商品管理 {
id: FUN-101
text: 支持商品上架、下架和库存管理
risk: Medium
verifymethod: Test
}
functionalRequirement 订单处理 {
id: FUN-102
text: 实现购物车、下单和支付流程
risk: High
verifymethod: Test
}
performanceRequirement 系统性能 {
id: PER-201
text: 支持1000并发用户,响应时间<500ms
risk: Medium
verifymethod: Analysis
}
电商平台 - contains -> 商品管理
电商平台 - contains -> 订单处理
电商平台 - contains -> 系统性能
技术架构思维导图
mindmap
技术架构设计
前端技术栈
React框架
TypeScript语言
Webpack构建
后端技术栈
Node.js运行时
Express框架
MongoDB数据库
DevOps工具链
Docker容器化
Jenkins持续集成
Kubernetes编排
质量保障
单元测试(Jest)
集成测试(Cypress)
性能测试(Lighthouse)
最佳实践与使用技巧
- 层次结构清晰化:在思维导图中保持一致的缩进格式,确保层级关系明确
- 需求标识规范化:采用统一的ID命名规范,如"REQ-001"、"FUN-101"等
- 风险等级合理分配:根据项目实际情况准确评估需求风险级别
- 验证方法匹配性:选择最适合的验证方法确保需求可测试性
- 关系完整性:确保所有需求关系都有明确的来源和目的地
通过Mermaid的思维导图和需求图功能,技术团队能够以代码化的方式管理复杂的需求体系和架构设计,实现文档与代码的同步更新,大幅提升项目管理的效率和准确性。这两种图表类型的结合使用,为现代软件开发提供了完整的可视化需求管理解决方案。
C4架构图与ER图设计
在现代软件开发中,系统架构设计和数据模型设计是两个至关重要的环节。Mermaid通过其强大的C4架构图和实体关系图(ER图)功能,为开发者和架构师提供了直观、高效的建模工具。本文将深入探讨这两种图表的语法特性、使用场景以及最佳实践。
C4架构图:系统架构的可视化利器
C4模型是由Simon Brown提出的一种软件架构可视化方法,它通过四个不同层次的抽象(上下文、容器、组件和代码)来描述软件系统。Mermaid的C4图支持完全兼容PlantUML语法,使得架构师能够快速创建专业的架构文档。
系统上下文图(C4Context)
系统上下文图是C4模型的最顶层,它展示了系统与外部用户和其他系统之间的关系。以下是一个典型的银行系统上下文图示例:
C4Context
title System Context diagram for Internet Banking System
Enterprise_Boundary(b0, "BankBoundary0") {
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
Person_Ext(customerC, "Banking Customer C", "External customer description")
System(SystemAA, "Internet Banking System", "Allows customers to view information and make payments.")
Enterprise_Boundary(b1, "BankBoundary") {
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores core banking information")
System_Ext(SystemC, "E-mail system", "Internal Microsoft Exchange system")
}
}
BiRel(customerA, SystemAA, "Uses")
BiRel(SystemAA, SystemE, "Uses")
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
容器图(C4Container)
容器图展示了应用程序的高层次技术选择,包括web服务器、应用程序服务器、数据库等:
C4Container
title Container diagram for Internet Banking System
Person(customer, "Customer", "A bank customer with personal accounts")
System_Ext(email_system, "E-Mail System", "Internal Exchange system")
Container_Boundary(c1, "Internet Banking") {
Container(spa, "Single-Page App", "JavaScript, Angular", "Provides banking functionality via web browser")
Container(web_app, "Web Application", "Java, Spring MVC", "Delivers static content and SPA")
ContainerDb(database, "Database", "SQL Database", "Stores user registration info")
}
System_Ext(banking_system, "Mainframe Banking System", "Core banking information storage")
Rel(customer, web_app, "Uses", "HTTPS")
Rel(customer, spa, "Uses", "HTTPS")
Rel(web_app, spa, "Delivers")
Rel(spa, banking_system, "Uses", "JSON/HTTPS")
组件图(C4Component)
组件图深入到单个容器的内部,展示其内部组件结构:
C4Component
title Component diagram for API Application
Container_Boundary(api, "API Application") {
Component(sign, "Sign In Controller", "MVC Rest Controller", "User authentication")
Component(accounts, "Accounts Summary Controller", "MVC Rest Controller", "Account information")
Component(security, "Security Component", "Spring Bean", "Security operations")
Component(mbsfacade, "Mainframe Banking Facade", "Spring Bean", "Mainframe integration")
Rel(sign, security, "Uses")
Rel(accounts, mbsfacade, "Uses")
}
Rel_Back(spa, sign, "Uses", "JSON/HTTPS")
Rel(spa, accounts, "Uses", "JSON/HTTPS")
实体关系图(ER图):数据建模的核心工具
实体关系图是数据库设计的标准工具,用于描述数据实体、属性和关系。Mermaid的ER图语法简洁而强大,支持完整的Crow's Foot表示法。
基础ER图语法
Mermaid的ER图使用直观的语法来描述实体之间的关系:
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
带属性的实体定义
可以详细定义每个实体的属性和约束:
erDiagram
CUSTOMER ||--o{ ORDER : places
CUSTOMER {
string name
string custNumber PK
string sector
}
ORDER ||--|{ LINE-ITEM : contains
ORDER {
int orderNumber PK
string deliveryAddress
date orderDate
}
LINE-ITEM {
string productCode PK
int quantity
float pricePerUnit
}
高级特性:键约束和注释
Mermaid ER图支持完整的数据建模特性:
erDiagram
CUSTOMER {
string customerID PK
string name
string email UK
string phone "Contact number"
}
ORDER {
int orderID PK
string customerID FK
date orderDate
decimal totalAmount
}
PRODUCT {
string productCode PK
string name
decimal price
int stockQuantity
}
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ ORDER-ITEM : contains
PRODUCT ||--o{ ORDER-ITEM : included_in
样式定制与布局控制
Mermaid提供了丰富的样式定制选项,让用户能够创建符合品牌标准的专业图表。
C4图样式定制
C4Context
Person(customer, "Bank Customer", "Regular banking customer")
System(banking, "Online Banking", "Internet banking system")
Rel(customer, banking, "Uses")
UpdateElementStyle(customer, $fontColor="red", $bgColor="lightgray", $borderColor="darkred")
UpdateRelStyle(customer, banking, $textColor="blue", $lineColor="blue", $offsetX="10")
UpdateLayoutConfig($c4ShapeInRow="4", $c4BoundaryInRow="2")
ER图样式配置
虽然ER图的样式定制相对简单,但Mermaid仍然提供基本的颜色配置选项:
erDiagram
CUSTOMER {
string id PK
string name
string email
}
ORDER {
string id PK
string customerId FK
date orderDate
}
CUSTOMER ||--o{ ORDER : places
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00