官网
在线编辑器
Mermaid能绘制哪些图?
pie
关键字,具体用法后文将详细介绍graph
关键字,具体用法后文将详细介绍sequenceDiagram
关键字gantt
关键字classDiagram
关键字stateDiagram
关键字journey
关键字基本格式
```mermaid
pie
```
语法——仅供参考,建议直接看实例
pie
关键字开始图表
title
关键字及其在字符串中的值,为饼图赋予标题。(可选)
" "
内写上分区名。:
作为分隔符pie
title 为什么总是宅在家里?
"喜欢宅" : 15
"天气太热或太冷" : 20
"穷" : 500
其中
->>
-->
sequenceDiagram
participant 用户A
participant WS
participant 用户B
用户A->>WS: 1. 创建offer并发送 sdp type:offer
WS->>用户B: 2. sdp type:offer
用户B->>WS: 3. sdp type:answer
WS-->>用户A: 4. sdp type:answer
sequenceDiagram
participant A as 用户A
participant WS as WS
participant B as 用户B
A->>WS: 1. 创建offer并发送 sdp type:offer
WS->>B: 2. sdp type:offer
B->>WS: 3. sdp type:answer
WS->>A: 4. sdp type:answer
方向:用于开头,声明流程图的方向。
graph
或graph TB
或graph TD
:从上往下graph BT
:从下往上graph LR
:从左往右graph RL
:从右往左左右布局
graph LR
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
上下布局
graph TB
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
下面的实例中,没有为graph指定方向,因此默认是从上往下的。但是由于各个结点之前没有箭头,所以他们都处于同一排。id1-id6是节点名,可随意定义。
graph
默认方形
id1[方形]
id2(圆边矩形)
id3([体育场形])
id4[[子程序形]]
id5[(圆柱形)]
id6((圆形))
效果
graph
id1{菱形}
id2{{六角形}}
id3[/平行四边形/]
id4[\反向平行四边形\]
id5[/梯形\]
id6[\反向梯形/]
效果
实线箭头:分为无文本箭头和有文本箭头,有文本箭头有2种书写格式
graph LR
a-->b--文本1-->c-->|文本2|d
粗实线箭头:分为无文本箭头和有文本箭头
graph LR
a==>b==文本==>c
虚线箭头:分为无文本箭头和有文本箭头
graph LR
a-.->b-.文本.->c
无箭头线:即以上三种连线去掉箭头后的形式
graph LR
a---b
b--文本1!---c
c---|文本2|d
d===e
e==文本3===f
f-.-g
g-.文本.-h
其他连线:需要将graph
关键字改为flowchart
,除了新增加的连线形式外,上面三种线的渲染效果也会不同
flowchart LR
A o--o B
B <--> C
C x--x D
旧连线 --文本--> 也会不同
延长连线:增加相应字符即可,如下图中的B到E,连线中增加了一个-
。字符可多次添加。
graph LR
A[Start] --> B{Is it?};
B -->|Yes| C[OK];
C --> D[Rethink];
D --> B;
B --->|No| E[End];
直链
graph LR
A -- text --> B -- text2 --> C
多重链:可以使用&
字符,或单个描述
graph
a --> b & c--> d
A & B--> C & D
X --> M
X --> N
Y --> M
Y --> N
flowchart TB
c1-->a2
subgraph one
a1-->a2
end
subgraph two
b1-->b2
end
subgraph three
c1-->c2
end
one --> two
three --> two
two --> c2
gantt
section Section
Completed :done, des1, 2014-01-06,2014-01-08
Active :active, des2, 2014-01-07, 3d
Parallel 1 : des3, after des1, 1d
Parallel 2 : des4, after des1, 1d
Parallel 3 : des5, after des3, 1d
Parallel 4 : des6, after des4, 1d
语法解释:[*]
表示开始或者结束,如果在箭头右边则表示结束。
stateDiagram
[*] --> s1
s1 --> s2
s1 --> s3
s2 --> [*]
s3 --> [*]
语法解释:<|--
表示继承,+
表示 public
,-
表示 private
,学过 Java 的应该都知道。
classDiagram
Animal <|-- Duck
Animal <|-- Fish
Animal <|-- Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}