流程图

所有流程图都由节点、几何图像、箭头或线条组成。 mermaid代码定义了这些节点和边的制作和交互方式。可以有不同的箭头类型、多向箭头以及与子图的连接。

节点

节点

flowchart LR
id
flowchart LR
id

带文字的节点

可以在框中设置与id不同的文本。如果多次这样做,将使用的节点的最后一个文本。另外,如果稍后为节点定义边,则可以省略文本定义。之前定义的将在呈现框时使用。

flowchart LR
node[id text]
flowchart LR
node[id text]

节点形状

图形 示例 备注
方形 id[方形]
圆角 id(圆角)
圆形 id((圆))
体育场 id([体育场])
圆柱 id[(圆柱)] 可以表示数据库
子程序 id[[子程序]]
不对称 id>不对称]
菱形 id{条件} 可以作为判断
六角形 id{{六角形}}
平行四边形 id[/平行四边形/]
平行四边形 id[\平行四边形\]
梯形 id[/梯形\]
梯形 id[\梯形/]

方形节点

flowchart TB
A[默认节点]
flowchart TB
A[默认节点]

圆角节点

flowchart TB
A(圆角节点)
flowchart TB
A(圆角节点)

圆形节点

flowchart LR
A((圆形))
flowchart TB
A((圆形))

体育场节点

flowchart TB
A([体育场节点])
flowchart TB
A([体育场节点])

圆柱节点

flowchart LR
A[(圆柱形)]
flowchart LR
A[(圆柱形)]

子程序形状节点

flowchart LR
A[[子程序形状]]
flowchart TB
A[[子程序形状]]

不对称形状节点

flowchart LR
A>不对称形状]
flowchart TB
A>不对称形状]

菱形节点

flowchart LR
A{菱形}
flowchart TB
A{菱形}

六角形

flowchart LR
A{{六角形}}
flowchart TB
A{{六角形}}

平行四边行节点

flowchart BT
A[\平行四边形\]
B[/平行四边形/]
flowchart BT
A[\平行四边形\]
B[/平行四边形/]

梯形节点

flowchart LR
A[/梯形\] B[\梯形/]
flowchart LR
A[/梯形\] === B[\梯形/]

子程序形状节点

flowchart LR
A[[子程序形状]]
flowchart TB
A[[子程序形状]]

定义流程图的方向

方向 描述
TB或者TD 从上到下。默认
BT 从下到上
LR 从左到右
RL 从右到左

声明流程图从上到下(TD 或 TB)。

flowchart
A-->B
flowchart
A-->B

声明了流程图是从左到右(LR)的方向。

flowchart LR
A-->B
flowchart LR
A-->B

节点连接

分类

节点可以与连接/边连接。 可以有不同类型的连接,也可以将文本字符串附加到连接。

分类如下:

flowchart TB
l[连接]-->x[线形]-->P[单线] & C[粗线] & X[虚线]
P-->PD["--"]
C-->CD["=="]
X-->XD["-.-"]
l-->箭头--> jy[有箭头] & jw[无箭头]
jy-->jyD[" "]
jw-->jwD[">"]
l-->注释-->zy(有注释) & zw(无注释)

线性和箭头的分类

根据线形、箭头(还有其他形状,但先默认为箭头,其他形状下面阐述)和注释(描述)的分类,可以有12种形式的连接形式:

表述 说明 使用示例
--- 单线无箭头 A(出去游玩)---B[回家]
--> 单线加箭头 A(出去游玩)-->B[回家]
--text-- 单线加描述 A(出去游玩)--玩够了--B[回家]
--text--> 单线箭头加描述 A(出去游玩)--玩够了-->B[回家]
=== 粗线 A(出去游玩)===B[回家]
==> 粗线加箭头 A(出去游玩)==>B[回家]
== text== 粗线加描述 A(出去游玩)== 玩够了==B[回家]
== text==> 粗线箭头加描述 A(出去游玩)== 玩够了==>B[回家]
-.- 虚线 A(出去游玩) -.-[回家]
-.-> 虚线加箭头 A(出去游玩)-.->B[回家]
-.text.- 虚线加描述 A(出去游玩)-.玩够了.-B[回家]
-.text.-> 虚线箭头加描述 A(出去游玩)-.玩够了.->B[回家]

连接详细例

单线带箭头的连接

flowchart LR
A-->B
c<-->|双向箭头|c1
A1--->B1
flowchart
A-->B
c<-->|双向箭头|c1
A1--->B1

最少2条线。超过2条连接就会越长。其他连接同样的道理。

粗线带箭头连接

flowchart LR
A==>B
flowchart LR
A==>B

虚线带箭头连接

flowchart LR
A-.->B
flowchart LR
A-.->B

普通没有箭头的连接

flowchart LR
A---B
flowchart LR
A---B

粗线没有箭头连接

flowchart LR
A===B
flowchart LR
A===B

虚线无箭头连接

flowchart LR
A-.-B
flowchart LR
A-.-B

有文字的连接

flowchart LR
A1-->|hello world|B1
A11--"hello world<br>另种方式"-->B11
ca11==>|hello world|ca21
ca1=="hello world<br>另种方式"==>ca2
xa-.->|I like the world|xa1
xa11-."I like the world<br>另种方式".->xa111
flowchart
A1-->|hello world|B1
A11--"hello world<br>另种方式"-->B11
ca11==>|hello world|ca21
ca1=="hello world<br>另种方式"==>ca2
xa-.->|I like the world|xa1
xa11-."I like the world<br>另种方式".->xa111
flowchart LR
a1---|"hello world, <br>我喜欢"|b1
c1===|hello world|c2
x1-.-|I like the world|x2
flowchart LR
a1---|"hello world, <br>我喜欢"|b1
c1===|hello world|c2
x1-.-|I like the world|x2

备注,连接的上文字不能是标点符号。所以连接上的文字要精炼。但如果确实需要特殊字符则可以放到英文双引号" "中。

其他箭头形状

flowchart LR
A --o B --x C
flowchart LR
A --o B --x C
flowchart LR
A o--o B x--x C
flowchart LR
A o--o B x--x C

连接长度

流程图中的每个节点最终都会根据其连接到的节点分配到渲染图中的等级,即垂直或水平级别(取决于流程图方向)。 默认情况下,连接可以跨越任意数量的等级,但可以通过在连接定义中添加额外的破折号来要求任何连接比其他连接更长

flowchart TB
A[开始]-->A1{想去旅游吗}
A1-->|想|B{有新冠疫情吗}
B-->|No|可以去
B-->|Yes|不能去 A1----->|不想|结束
flowchart TB
A[开始]-->A1{想去旅游吗}
A1-->|想|B{有新冠疫情吗}
B-->|No|可以去 -->E
B-->|Yes|不能去 -->E

A1----->|不想|E[结束]

特殊字符

特殊字符比如,()[]*等等无法被渲染,可以将文本放在英文双引号""内。 如下例所示:

flowchart LR
A["我是特殊字符,比如:<br>[]{}*`:=->"]
flowchart LR
A["我是特殊字符,比如:<br>[]{}*`:=->"]

转义字符

flowchart LR
A["我是特殊字符,比如:#9829;、&quot;"]
flowchart LR
A["我是特殊字符,比如:#9829;、&quot;"]

给出的数字是以 10 为基数,因此 # 可以编码为 #35;#9829表示心形。 还支持使用 HTML 字符名称,比如双引号可以用&quot;表示。

子图(subgraph)

flowchart  LR

	subgraph R[需求]

	%%备注表示子图方向的命令不起作用: directive LR
需求调研 --> 需求分析 --> 需求说明书
end subgraph C[编码和调试]
需求理解-->编码-->调试
end subgraph D[上线]
数据库初始化--> 软件部署-->应用启动
end R==>C==>D
flowchart LR
subgraph R[需求]
%%备注表示子图方向的命令不起作用: directive LR
需求调研 --> 需求分析 --> 需求说明书
end

subgraph C[编码和调试]
需求理解-->编码-->调试
end

subgraph D[上线]
数据库初始化--> 软件部署-->应用启动
end

R==>C==>D

注解

如果需要注解则可以使用%%

flowchart RL
%%从左到右的普通流程图
A-->B
flowchart RL
%%从左到右的普通流程图
A-->B

markdown mermaid流程图的更多相关文章

  1. Markdown Mermaid

    Mermaid 是一个用于画流程图.状态图.时序图.甘特图的库,使用 JS 进行本地渲染,广泛集成于许多 Markdown 编辑器中. 之前用过 PlantUML,但是发现这个东西的实现原理是生成 U ...

  2. Hexo引入Mermaid流程图和MathJax数学公式

    近来用Markdown写文章,越来越不喜欢插入图片了,一切能用语法解决的问题坚决不放图,原因有二: 如果把流程图和数学公式都以图片方式放到文章内,当部署到Github上后,访问博客时图片加载实在太慢, ...

  3. markdown的流程图实现和代码语法着色

    用flowchart为markdown添加流程图 举个例子如下,根据这个例子大家就能看懂我到底是怎么实现的 <!DOCTYPE html> <html> <head> ...

  4. MarkDown和流程图诠释你的代码

    写在前面:首先感谢导师-猴哥对我的认可(求多分享点编程经验.工具.多开课),学习编程是一个痛苦和快乐的过程,希望大家共勉 本文介绍MarkDown的基本语法.使用MarkDown画简单的流程图.使用X ...

  5. VS Code实现markdown画流程图

    安装最新的vscode编辑器,原生支持markdown语法.不会markdow的人可以去好好学下,写文档神器!!! 1.安装Markdown Preview Enhanced插件 2.本地新建test ...

  6. markdown的流程图、时序图、甘特图画法

    https://www.jianshu.com/p/a9ff5a9cdb25 Markdown里面的序列图 https://shd101wyy.github.io/markdown-preview-e ...

  7. markdown ——flow流程图

    一个纯文本的语法怎么画图? 将流程图代码包含在```folw和`````之间即可 例子 st=>start: Start op=>operation: Your Operation sub ...

  8. markdown mermaid序列图

    序列图(时序图) 序列图是一种交互图,它显示了进程如何相互操作以及按什么顺序操作. sequenceDiagram participant l as 大灰狼 participant y as 小羊 l ...

  9. markdown mermaid状态图

    状态图 状态图是一种用于计算机科学和相关领域描述系统行为的图.状态图要求描述的系统由有限数量的状态组成. 语法: stateDiagram-v2 [*] --> Still Still --&g ...

随机推荐

  1. Excel里的格式会自动变成日期或会计专用吗?(Excel技巧集团)

    Excel里的格式会自动变成日期或会计专用? 正常情况下当然不会了,可是最近却有很多很多同学问这样的问题,并把这个问题列成了Excel2007和2010的一个Bug,可是小妖同学却从来没遇到过这样的问 ...

  2. 最新超详细VMware下CentOS系统安装

    一.了解CentOS系统 CentOS是免费的.开源的.可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统 ...

  3. js实现数组去重的方式(7种)

    JS数组去重的方式 例:将下面数组去除重复元素(以多种数据类型为例) const arr = [1, 2, 2, 'abc', 'abc', true, true, false, false, und ...

  4. LuoguP6857 梦中梦与不再有梦 题解

    Update \(\texttt{2020.10.20}\) 增加了证明.感谢@东北小蟹蟹(dbxxxqwq)的提醒. Content 有一个 \(n\) 个点的无向图,每两个点之间都有一条边直接相连 ...

  5. Redis缓存穿透、击穿、雪崩,数据库与缓存一致性

    Redis作为高性能非关系型(NoSQL)的键值对数据库,受到了广大用户的喜爱和使用,大家在项目中都用到了Redis来做数据缓存,但有些问题我们在使用中不得不考虑,其中典型的问题就是:缓存穿透.缓存雪 ...

  6. 四、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-会话好友列表的实现

    会话好友列表的实现 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展 ...

  7. Linux(Centos)内存占用过高处理

    查看内存占用最大 ps aux| grep -v "USER" |sort -n -r -k 4 |awk 'NR==1{ print $0}' 命令查看占用内存最大的10个进程 ...

  8. VS2017激活key

    密钥 KBJFW-NXHK6-W4WJM-CRMQB-G3CDH

  9. codeforce 595B-Pasha and Phone(数学)

    今天补题,昨天是我太猖狂了,在机房吹牛,然后说着说着忘了时间,后来楼长来了,我们走了,CF没打成. 不扯了,下面说题: 题目的意思是给你n和k, n代表最后得出的号码有n为,然后k能被n整除,就是把n ...

  10. 如何把 MySQL 备份验证性能提升 10 倍

    JuiceFS 非常适合用来做 MySQL 物理备份,具体使用参考我们的官方文档.最近有个客户在测试时反馈,备份验证的数据准备(xtrabackup --prepare)过程非常慢.我们借助 Juic ...