Markdown 图表绘制(十四)

14.图表绘制

使用文本语法生成图表,便于版本控制、动态更新。主流工具:Mermaid(最流行)、PlantUML、Graphviz。

一、Mermaid 基本介绍

  • 支持图表类型:流程图、序列图、类图、状态图、甘特图、饼图等
  • 渲染支持:GitHub、GitLab、Typora、Obsidian(需插件)、VS Code(插件)
  • 在线编辑器https://mermaid.live

二、流程图

2.1 方向声明

代码 方向
TD​ / TB 从上到下
BT 从下到上
LR 从左到右
RL 从右到左

2.2 节点形状

形状 语法 示例
矩形(方形) [文字] A[开始]
圆角矩形 (文字) B(处理)
菱形(决策) {文字} C{条件}
圆形 ((文字)) D((结束))
旗帜形 >文字] E>输出]

2.3 连接线类型

类型 语法 说明
实线箭头 --> A-->B
虚线箭头 -.-> A-.->B
粗实线箭头 ==> A==>B
实线(无箭头) --- AB
虚线(无箭头) -.- A-.-B

2.4 完整示例

graph TD
    A[开始] --> B{条件判断}
    B -->|Yes| C[执行操作A]
    B -->|No| D[执行操作B]
    C --> E[结束]
    D --> E

三、时序图

3.1 基本语法

  • participant 定义参与者
  • ->> 实线箭头(请求)
  • -->> 虚线箭头(响应)
  • Note right of / left of 添加注释
  • loop 循环块

3.2 示例

sequenceDiagram
    participant A as 用户
    participant B as 系统
    participant C as 数据库
    
    A->>B: 登录请求
    B->>C: 验证用户信息
    C-->>B: 返回验证结果
    B-->>A: 登录成功/失败

四、甘特图

4.1 语法要点

  • title 标题
  • dateFormat YYYY-MM-DD 日期格式
  • section 阶段名称
  • 任务格式:任务名 : 状态, 标识符, 开始时间, 持续时间/结束时间
  • 状态:done​(已完成)、active​(进行中)、crit(关键任务)
  • after 标识符 相对开始时间

4.2 示例

gantt
    title 项目开发计划
    dateFormat YYYY-MM-DD
    section 设计阶段
    需求分析      :done,    des1, 2024-01-01, 15d
    UI设计        :active,  des2, 2024-01-10, 30d
    section 开发阶段
    前端开发      :         dev1, after des2, 45d
    后端开发      :         dev2, 2024-02-01, 60d
    section 测试阶段
    单元测试      :         test1, after dev1, 15d

五、饼图

5.1 语法

  • pie 声明
  • title 标题
  • "标签" : 数值 (数值无需百分比符号,自动计算比例)

5.2 示例

pie
    title 浏览器市场份额
    "Chrome" : 65
    "Safari" : 15
    "Firefox" : 10
    "其他" : 10

六、类图

6.1 基本语法

  • class 类名 定义类
  • 属性/方法格式:+公有#保护-私有~包内
  • 关系:-->​(关联)、--|>​(继承)、..>​(实现)、o--​(聚合)、*--(组合)

6.2 示例

classDiagram
    class 用户 {
        +用户名: string
        +密码: string
        +登录()
    }
    class 订单 {
        +订单号: int
        +创建日期: date
        +计算总价()
    }
    用户 "1" --> "n" 订单

七、高级技巧

7.1 主题定制

在图表前添加初始化指令:

%%{init: {'theme': 'forest'}}%%
pie
    title 自定义主题
    "项目A" : 30
    "项目B" : 50

可选主题:default​、forest​、dark​、neutral 等。

7.2 交互式图表

部分渲染器支持

graph TD
    A[点击我] --> B[显示详细信息]
    click A "https://www.runoob.com" "提示文本"

7.3 导出格式

多数工具支持导出为 PNGSVGPDF

八、工具与平台支持

平台/工具 Mermaid PlantUML Graphviz
GitHub
GitLab
VS Code 需插件 需插件 需插件
Typora
Obsidian 需插件 需插件 需插件

九、最佳实践

  1. 保持简洁:每张图表聚焦一个核心流程或关系。
  2. 统一风格:同一文档中使用相同的布局方向、节点形状。
  3. 添加文字说明:复杂图表前后加解释段落。
  4. 版本控制友好:文本形式的图表便于 diff 和协作。
  5. 测试渲染:在不同平台(GitHub、本地编辑器)上预览,确保兼容。

十、常见问题

Q1:图表无法显示?

  • 检查代码块语言是否为 mermaid
  • 确认渲染器支持 Mermaid(GitHub 支持,但需在 markdown 代码块中正确标识)
  • 检查语法错误(缺少空格、括号不匹配等)

Q2:如何学习更多语法?

Q3:有无可视化编辑器?

总结速查表

图表类型 代码块标识 常用语法
流程图 mermaid​ + graph TD/LR A-->B​、A{条件}
时序图 sequenceDiagram participant​、->>​、-->>
甘特图 gantt section​、after​、done/active
饼图 pie "标签" : 数值
类图 classDiagram class​、+属性​、--> 关系

💡 提示:图表代码写在 ```mermaid 代码块中,确保编辑器/平台支持 Mermaid 渲染。