markdown绘制流程图相关代码片段记录

有时候会使用typora来绘制一些流程图,进行编码之类的工作,在网络搜集了一些笔记,做个记录,方便日后进行复习,相关的记录如下:

每次作图时,代码以「graph <布局方向>」开头,如:

graph TB
    A(开始)
    B[打开冰箱门]
    C{"冰箱小不小?"}
    D((连接))

TB(Top Bottom)表示从上向下布局,另外三种是

BT

LR(Left Right)

RL
开始 打开冰箱门 冰箱小不小? 连接

不同种类的括号对应不同的节点图形

括号中的文字就是显示在节点中的描述

A B C D 这些字符是为节点取的名字,这个名字可以在之后反复利用(在编程里这相当于定义变量)

线段用于连接节点,一同来看一下:

graph TB
    A[把大象放进去] --> B{"冰箱小不小?"}
    B -->|不小| C[把冰箱门关上]
    B -->|小| D[换个大冰箱]

上述 -->是带箭头线段,-->|不小| 是加了描述文字的带箭头线段。它们都位于两个节点之间。

上一个代码示例中,B{"冰箱小不小?"} 这里的描述文字加了引号,是因为其中包含特殊字符(问号),用引号包裹防止出错为节点取名为 A B C 不太合适,如果节点很多时往往容易混淆,不方便后续使用和阅读(编程时命名的重要性)。建议起有意义的名字,除上述带箭头线段 --> 外,还有带箭头虚线线段 -.->、 带箭头加粗线段 ==>、不带箭头线段 ---
不小 小 把大象放进去 冰箱小不小? 把冰箱门关上 换个大冰箱

graph TB
    Start(开始) --> Open[打开冰箱门]
    Open --> Put[把大象放进去]
    Put[把大象放进去] --> IsFit{"冰箱小不小?"}
    
    IsFit -->|不小| Close[把冰箱门关上]
    Close --> End(结束)
        
    IsFit -->|小| Change[换个大冰箱]
    Change --> Open

不小 小 开始 打开冰箱门 把大象放进去 冰箱小不小? 把冰箱门关上 结束 换个大冰箱

graph TB
    A(MOVE MOTOR) --> B[RAMPMODESET velocity_positive]
    B --> C[SET AMAX = 1000, SET VMAX = 100000 OR DIFFERENT VALUE]
    C --> D(MOTOR MOVES, CHANGE VMAX AS NEEDED)

MOVE MOTOR RAMPMODESET velocity_positive SET AMAX = 1000, SET VMAX = 100000 OR DIFFERENT VALUE MOTOR MOVES, CHANGE VMAX AS NEEDED

graph LR
A[方形] -->B(圆角)
    B --> C{条件a}
    C -->|a=1| D[结果1]
    C -->|a=2| E[结果2]
    F[横向流程图]

a=1 a=2 方形 圆角 条件a 结果1 结果2 横向流程图

graph TD
A[方形] --> B(圆角)
    B --> C{条件a}
    C --> |a=1| D[结果1]
    C --> |a=2| E[结果2]
    F[竖向流程图]

a=1 a=2 方形 圆角 条件a 结果1 结果2 竖向流程图

flowchat
st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st(right)->op(right)->cond
cond(yes)->io(bottom)->e
cond(no)->sub1(right)->op

Created with Raphaël 2.3.0 开始框 处理框 判断框(是或否?) 输入输出框 结束框 子流程 yes no

sequenceDiagram
对象A->>对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B-->>对象A: 我很好(响应)
对象A->>对象B: 你真的好吗?

对象A 对象B 对象B你好吗?(请求) 对象B的描述 对象A的描述(提示) 我很好(响应) 你真的好吗? 对象A 对象B 标题:复杂使用

sequenceDiagram
Title: 标题:复杂使用
对象A->>对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B-->>对象A: 我很好(响应)
对象B->>小三: 你好吗
小三-->>对象A: 对象B找我了
对象A->>对象B: 你真的好吗?
Note over 小三,对象B: 我们是朋友
participant C
Note right of C: 没人陪我玩

对象A 对象B 小三 C 对象B你好吗?(请求) 对象B的描述 对象A的描述(提示) 我很好(响应) 你好吗 对象B找我了 你真的好吗? 我们是朋友 没人陪我玩 对象A 对象B 小三 C 标题:复杂使用

%% 时序图例子,-> 直线,-->虚线,->>实线箭头
  sequenceDiagram
    participant 张三
    participant 李四
    张三->王五: 王五你好吗?
    loop 健康检查
        王五->王五: 与疾病战斗
    end
    Note right of 王五: 合理 食物 <br/>看医生...
    李四-->>张三: 很好!
    王五->李四: 你怎么样?
    李四-->王五: 很好!

张三 李四 王五 王五你好吗? 与疾病战斗 loop [健康检查] 合理 食物 看医生... 很好! 你怎么样? 很好! 张三 李四 王五 标题:复杂使用

flowchat
st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op

Created with Raphaël 2.3.0 开始框 处理框 判断框(是或否?) 输入输出框 结束框 子流程 yes no

flowchat
st=>start: MOVE TO A TARGET POSITION
op=>operation: RAMPMODE SET position
sub1=>subroutine: CONFIGURE RAMP PARAMETERS
op1=>operation: SET XTARGET
cond=>condition: NEW ON-THE-FLY TARGET?
cond1=>condition: CHANGE OF ANY PARAMETERS REQUIRED?
op2=>operation: SET MOTION PARAMETERS AS DESIRED
cond2=>condition: FLAG Event_POS_reached ACTIVE?
e=>end: TARGET POSITION HAS BEEN REACHED
st->op->sub1->op1
op1->cond
cond(yes)->op1
cond(no)->cond1
cond1(yes)->op2(right)->op1
cond1(no)->cond2
cond2(yes)->e
cond2(no)->cond

Created with Raphaël 2.3.0 MOVE TO A TARGET POSITION RAMPMODE SET position CONFIGURE RAMP PARAMETERS SET XTARGET NEW ON-THE-FLY TARGET? CHANGE OF ANY PARAMETERS REQUIRED? SET MOTION PARAMETERS AS DESIRED FLAG Event_POS_reached ACTIVE? TARGET POSITION HAS BEEN REACHED yes no yes no yes no

附录一个源码链接:

https://download.csdn.net/download/weixin_44317448/88841198

相关推荐
我叫啥都行4 分钟前
计算机基础知识复习9.7
运维·服务器·网络·笔记·后端
ForRunner12329 分钟前
使用 Python 高分解决 reCAPTCHA v3 的指南
数据库·python·microsoft
qq 1778036221 小时前
智能新时代,游戏盾守护顺畅体验
运维·服务器·网络·游戏·云计算·ddos·ip
晓幂1 小时前
CTFShow-信息搜集
笔记·学习
躺平的花卷1 小时前
Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中
数据库·爬虫·python·mysql
Flying_Fish_roe2 小时前
linux-安全管理-防火墙与网络安全
linux·数据库·oracle
cyr___2 小时前
Unity教程(十六)敌人攻击状态的实现
学习·游戏·unity·游戏引擎
Code哈哈笑2 小时前
【C++ 学习】多态的基础和原理(10)
java·c++·学习
A_cot2 小时前
Redis 的三个并发问题及解决方案(面试题)
java·开发语言·数据库·redis·mybatis
nbsaas-boot2 小时前
架构卡牌游戏:通过互动与挑战学习系统设计的创新玩法
学习·游戏·架构