前言:在做软件工程时经常会需要用到绘图来帮助理解软件构造,CSDN的编辑器集成了插入绘图工具mermaid,以下是对其常用语法的一些记录整理


状态图

  以下是学习mermaid语法的官网:https://mermaid-js.github.io/mermaid/#/stateDiagram
  每个代码块都要用以下代码包括进去,才能保证被MarkDown解释器解释为UML图:

```meraid
```

  本来打算一边记录一边在CSDN上用编辑器展示,但是目前它的编辑器不支持状态图的显示,只能编辑器Typora上做实验后截图发布效果对比图。


1.状态

  状态图的定义有很多,为了便于记忆,个人挑选了最常用的一种写法:

```mermaid
stateDiagram-v2
s2 : 这是状态2
```

  :前s2是状态的ID,效果如下:

2.转换

  mermaid用-->表示两个状态间的转换,比如: s1 --> s2。你也可以用:加上描述符组成转换条件:s1 --> s2 :转换,代码为:

```mermaid
stateDiagram-v2
s1 --> s2: A transition
```

  效果为:


3.初始和终止状态

  在状态转换图中,有两个特殊的状态:初始状态和终止状态(不明白这两个知识可以补习状态机相关知识)。它们是用[*]符号和-->标识的转换。
  [*] --> s1,表示初始状态到s1。
  s1 --> [*],表示s1到终止状态。
  代码如下:

```mermaid
stateDiagram-v2
[*] --> s1
s1 --> [*]
```

  效果如下:


4.组合状态

  在现实生活中状态复杂多变,往往具有多维性。可能在一个状态中,又有许多状态组成一个子状态机。mermaid用{}来表示组合状态。
  代码中,先定义出总的状态机。在在每个状态中用{}定义出每个子状态机,代码如下:

```mermaid
stateDiagram-v2
[*] --> First
First --> Second
First --> Thirdstate First {[*] --> firfir --> [*]
}
state Second {[*] --> secsec --> [*]
}
state Third {[*] --> thithi --> [*]
}
```

  效果如下:


5.分支和连接

  对于遇到分支条件或者组合条件的状态机,mermaid定义了关键字<<fork>><<join>>。下面例子中展示了这两个关键字的用法,先定义<<fork>><<join>>的状态,再进行引用定义。代码如下:

```mermaid
stateDiagram-v2
state fork_state <<fork>>[*] --> fork_statefork_state --> State2fork_state --> State3state join_state <<join>>State2 --> join_stateState3 --> join_statejoin_state --> State4State4 --> [*]
```

  效果如下:


6.标记

  对于一些复杂状态,我们通常需要在图上进行简单说明标记。mermaid使用了noteend note包括一个说明的起始。同时,它还用right ofleft of表明标记说明的位置在状态的左边还是右边。示例代码如下:

```mermaid
stateDiagram-v2State1: The state with a notenote right of State1标记重要信息notes.end noteState1 --> State2note left of State2 : 在状态左边标记
```

  效果如下:


7.并发

  对于UML中经常出现的并发状态,可以用--对组合状态中的子状态进行区分,就变成并行状态。代码示例如下:

```mermaid
stateDiagram-v2[*] --> Activestate Active {[*] --> NumLockOffNumLockOff --> NumLockOn : EvNumLockPressedNumLockOn --> NumLockOff : EvNumLockPressed--[*] --> CapsLockOffCapsLockOff --> CapsLockOn : EvCapsLockPressedCapsLockOn --> CapsLockOff : EvCapsLockPressed--[*] --> ScrollLockOffScrollLockOff --> ScrollLockOn : EvCapsLockPressedScrollLockOn --> ScrollLockOff : EvCapsLockPressed}
```

  效果如下:


8.注释

  注释是代码块中必不可少的,mermaid仅支持单行注释,注释符号为%%

```mermaid
stateDiagram-v2
[*] --> Still
Still --> [*]
%% this is a comment
Still --> Moving
Moving --> Still %% another comment
Moving --> Crash
Crash --> [*]
```

如果您觉得有帮助,请给我一个赞。
您的鼓励是我前进的动力(๑‾ ꇴ ‾๑)。

Markdown(四)——绘图工具mermaid之状态图stateDiagram相关推荐

  1. Markdown(五)——绘图工具mermaid之流程图Flowchart

    前言:更新下mermaid画图的流程图. 流程图   跟之前的状态图一样,要注意的是需要在在开头加上mermaid关键字. 1. 流程图流向   在最初设计流程图的时候,首先要确定流程图的总体流向,流 ...

  2. 一个简单易用的编程式绘图工具mermaid

    最近在编写文档时,想在图中插入一些示意图,按原来的做法,是想用visio之类的画图软件来完成这样的工作的.不巧新装的电脑,上面没有安装visio软件.而且只是想画一些简单的树状图之类的,想想这样的工作 ...

  3. 写作中常用的绘图工具

    由于在写作中经常需要配图,本文分享下我常用的绘图工具以及如何存储并展示配图. 白板绘图 Excalidraw 白板绘图的好处在于灵活度非常高.好的白板工具可以很方便的绘制自由的图片和预定义的结构化图形 ...

  4. 如何构建一个在线绘图工具:Feakin 是如何设计与构建的?

    高中,读过几本 3D 图形编程相关的书.怎么说呢,自那以后,图形学相关的东西,都不在我的兴趣范围里了.直到最近,我重新燃起了一点兴趣: 架构治理工具 ArchGuard 依赖于「图即代码」,用于生成架 ...

  5. 编程软件python图片-python Plotly绘图工具的简单使用

    1.plotly库的相关介绍 1)相关说明 plotly是一个基于javascript的绘图库,plotly绘图种类丰富,效果美观: 易于保存与分享plotly的绘图结果,并且可以与Web无缝集成: ...

  6. C#绘图工具之Move

    接着上一随笔中的那个小绘图工具,逐步完善其中的功能,上次说了关于文件树的操作,主要是导航文件的新建和删除,把那部分单独拿出来是因为遇到同事在项目中处理那部分功能时没有处理好,所以自己单独实现了一下,这 ...

  7. 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆

    圆与圆的位置关系有:相离,外切,相交,内切,内含,它们之间的位置是由圆心距与两半径的长度来确定的.那么如果想画出三个两两相切的圆,要怎样画呢?这时我们可以利用几何画板这个绘图工具,画出既标准又美观的图 ...

  8. Graphpad,经典绘图工具初学初探

    大多数科研文章都离不开图表,尤其是图,熟悉一些绘图软件,并将图在文章和PPT中展示出来,是科研训练的重要内容.漂亮的文章配图能给自己的工作加不少分,生信宝典推出R的系列教程ggplot2高效实用指南 ...

  9. 微软AI 绘图工具+ChatGPT免费用,10秒轻松出图,超详细教程,纯干货分享

    文 / 高扬(微信公众号:量子论) 人嘛,总爱喜新厌旧.很多朋友找我(gaoyang677)建议将"量子论"公众号的教程再做个扩展,比如讲讲如何用AI绘图. 经过内部讨论,认为这个 ...

最新文章

  1. .NET/C#中对自定义对象集合进行自定义排序的方法
  2. Docker安装mysql8
  3. lstm 文本纠错_工业界纠错系统
  4. github网址无法访问怎么办?
  5. 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...
  6. 乐刻发布新品牌LITTA 目前已拥有25万+线上付费用户
  7. select清除原来样式
  8. python超市管理系统总汇总功能解说_AdminModules --- 管理模块
  9. 阶段3 1.Mybatis_09.Mybatis的多表操作_9 mybatis多对多操作-查询用户获取用户所包含的角色信息...
  10. 在mac11以上系统可用的cocosbuilder3.0,12也可用。
  11. matlab触发 ttl,请问如何用TTL信号触发单反相机拍摄
  12. 深度学习基础 - 直线
  13. Redis持久化 - 邱乘屹的个人技术博客
  14. mysql 5.6 免安装版_mysql 5.6.15的免安装版 安装
  15. PHP:报错 strpos() expects parameter 1 to be string, integer given
  16. Vue 使用 video 标签实现视频播放
  17. Mac没有winnt格式_Mac本地视频播放软件----EVPlayer
  18. curl 错误:unable to verify the first certificate 解决办法
  19. 二次方程计算器-字符串处理
  20. PYTHON实现将一个文件夹下的名字满足条件的图片拷贝复制到另一个文件夹路径

热门文章

  1. android之Uniapp之Weex之module开发
  2. onvif协议之云台控制
  3. 前n个正整数相乘的时间复杂度为_初一数学必考的21个知识点,附考试重难点,预习必备!...
  4. Android Studio如何创建尺寸以及API通用的模拟器
  5. Python多分支实现四则运算器
  6. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
  7. vivado 如何创建工程模式_用Tcl定制Vivado设计实现流程
  8. 你真的会用搜索引擎吗
  9. 小甲鱼python课后题简书_MOOC_Python语言程序设计(嵩天)课后练习_第二周
  10. linux ubuntn j经验