Mermaid流程图

核心语法:形状决定意义

在工程图纸里,形状是有严格规定的。Mermaid 通过括号来控制形状

  • 矩形 []:表示过程/步骤 (Process)。
  • 菱形 {}:表示判断/决策 (Decision)。这是故障排查的核心。
  • 圆角 ():表示开始/结束 (Start/End)。

布局方向:TD 还是 LR

写在第一行。

  • flowchart TD (Top-Down):从上到下。适合画决策树、层级结构。
  • flowchart LR (Left-Right):从左到右。适合画工艺流向(比如 气路流程:进气 -> 过滤 -> 分析 -> 排空)。

连线技巧

  • 普通箭头:-->
  • 带文字的箭头:-- 文字 --> 或者 -->|文字|
    • 在做判断题时很有用: A -- Yes --> B
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
graph TD
    Start[故障现象: 读数异常] --> Q1{光强是否正常?}
    
    Q1 -- No (过低/波动) --> A1[查光学部件]
    A1 --> A1_1[换光源灯泡]
    A1 --> A1_2[擦拭气室镜片]
    A1 --> A1_3[检查光纤连接]
    
    Q1 -- Yes (光强很好) --> Q2{通零气回零吗?}
    
    Q2 -- No (零点高) --> A2[查气路污染]
    A2 --> A2_1[清洗气室]
    A2 --> A2_2[检查温控是否漂移]
    
    Q2 -- Yes (零点正常) --> Q3{通标气准吗?}
    
    Q3 -- No (偏低/慢) --> A3[查采样系统]
    A3 --> A3_1[查泵流速/漏气]
    A3 --> A3_2[换滤芯/电磁阀]
    
    Q3 -- Yes --> End[仪器没坏<br>是工况变了/DAS传输问题]
graph TD Start[故障现象: 读数异常] --> Q1{光强是否正常?} Q1 -- No (过低/波动) --> A1[查光学部件] A1 --> A1_1[换光源灯泡] A1 --> A1_2[擦拭气室镜片] A1 --> A1_3[检查光纤连接] Q1 -- Yes (光强很好) --> Q2{通零气回零吗?} Q2 -- No (零点高) --> A2[查气路污染] A2 --> A2_1[清洗气室] A2 --> A2_2[检查温控是否漂移] Q2 -- Yes (零点正常) --> Q3{通标气准吗?} Q3 -- No (偏低/慢) --> A3[查采样系统] A3 --> A3_1[查泵流速/漏气] A3 --> A3_2[换滤芯/电磁阀] Q3 -- Yes --> End[仪器没坏
是工况变了/DAS传输问题]

避坑指南

  • 坑 1:菱形括号里不能有特殊字符
    • 错误:Q1{光强 > 50%?}
    • 原因:?% 等符号有时会破坏语法。
    • 解决:像之前一样,用双引号包起来。 Q1{"光强 > 50%?"}
  • 坑 2:节点 ID 重复
    • 如果你写 A[检查] --> B[维修] --> A[检查],这表示流程回到了最初的起点(形成了闭环)。
    • 如果你只是想表达另一个“检查”步骤,不要用同一个 ID A,要用 A2
  • 坑 3:混淆 graphflowchart
    • 你可能会看到有人写 graph TD,有人写 flowchart TD
    • 建议:尽量使用 flowchart。它是新版渲染器,支持更多花样(比如子图 subgraph),而且连线更圆滑,不像 graph 那么生硬。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
flowchart LR
    %% 1. 定义样式:让图更好看
    classDef process fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
    classDef valve fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;

    %% 2. 采样部分
    subgraph Sampling [采样端]
        Probe(采样探头) --> Filter1[初级过滤]
        Filter1 --> HeatLine[伴热管线 120℃]
    end

    %% 3. 预处理部分
    subgraph Conditioning [预处理柜]
        HeatLine --> Pump((采样泵))
        Pump --> Cooler[冷凝除水]
        Cooler --> Filter2[精细过滤]
    end

    %% 4. 分析部分
    subgraph Analyzer [分析仪]
        Filter2 --> Valve{切换阀}
        Valve -- 样气 --> Chamber[测量气室]
        Valve -- 标气 --> Chamber
        Chamber --> Outlet(废气排放)
    end
    
    %% 5. 外部标气
    Cyl[标气瓶] -.-> Valve

    %% 应用样式
    class Filter1,Filter2,Cooler,Chamber process;
    class Valve valve;
flowchart LR %% 1. 定义样式:让图更好看 classDef process fill:#e1f5fe,stroke:#01579b,stroke-width:2px; classDef valve fill:#fff9c4,stroke:#fbc02d,stroke-width:2px; %% 2. 采样部分 subgraph Sampling [采样端] Probe(采样探头) --> Filter1[初级过滤] Filter1 --> HeatLine[伴热管线 120℃] end %% 3. 预处理部分 subgraph Conditioning [预处理柜] HeatLine --> Pump((采样泵)) Pump --> Cooler[冷凝除水] Cooler --> Filter2[精细过滤] end %% 4. 分析部分 subgraph Analyzer [分析仪] Filter2 --> Valve{切换阀} Valve -- 样气 --> Chamber[测量气室] Valve -- 标气 --> Chamber Chamber --> Outlet(废气排放) end %% 5. 外部标气 Cyl[标气瓶] -.-> Valve %% 应用样式 class Filter1,Filter2,Cooler,Chamber process; class Valve valve;
  • subgraph:把图分成了“采样端”、“预处理”、“分析仪”三块,逻辑非常清晰。
  • -.->:虚线箭头,表示标气不是一直通的,是间歇的。
  • classDef:这是进阶玩法,给不同的部件上色(比如过滤器是蓝色,阀门是黄色),看起来很专业。
Licensed under CC BY-NC-SA 4.0