Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart)

这篇具有很好参考价值的文章主要介绍了Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。



Mermaid 简介

Mermaid 是一个基于 JavaScript 的图表绘制工具,它使用类似 Markdown 的简单语法来编写,并动态地将它们渲染成图表。

Mermaid 支持的图表类型包括:

  1. 流程图 (Flowchart) : 用关键词 graphflowchart 表示
  2. 顺序图 (Sequence Diagram) : 用关键词 sequenceDiagram 表示
  3. 类图 (Class Diagram) : 用关键词 classDiagram 表示
  4. 状态图 (State Diagram) : 用关键词 stateDiagram 表示
  5. 实体关系图 (Entity Relationship Diagram) : 用关键词 erDiagram 表示
  6. 用户旅程图 (User Journey Diagram) : 用关键词 journey 表示
  7. 甘特图 (Gantt Diagram) : 用关键词 gantt 表示
  8. 饼图 (Pie Chart Diagram) : 用关键词 pie 表示
  9. 象限图 (Quadrant Chart) : 用关键词 quadrantChart 表示
  10. 需求图 (Requirement Diagram) : 用关键词 requirementDiagram 表示
  11. Gitgraph 图 (Gitgraph Diagram) : 用关键词 gitGraph 表示
  12. 思维导图 (Mindmap) : 用关键词 mindmap 表示
  13. 时间线图 (Timeline Diagram) : 用关键词 timeline 表示

丰富的图表类型,可以满足大部分的绘图需求,越来越多的人开始使用 Mermaid 来绘制图表。


如何使用 Mermaid

想要使用 Mermaid 绘制各类图表,可以通过以下方式:

  • 使用专门支持 Mermaid 渲染的在线编辑器,如:Mermaid Live Editor
  • 使用支持 Mermaid 语法的 Markdown 编辑器,如:Typora

通常在专门的 Mermaid 编辑器我们只需要编写 Mermaid 语法,就可以看到图表的渲染效果:

flowchart TD
    A[Christmas] -->|Get money| B(Go shopping)
    B --> C{Let me think}
    C -->|One| D[Laptop]
    C -->|Two| E[iPhone]
    C -->|Three| F[fa:fa-car Car]

但是在支持 Mermaid 的 Markdown 编辑器中,我们需要在 Mermaid 语法前后添加特定的标记,才能看到图表的渲染效果,如:

```mermaid
flowchart TD
    A[Christmas] -->|Get money| B(Go shopping)
    B --> C{Let me think}
    C -->|One| D[Laptop]
    C -->|Two| E[iPhone]
    C -->|Three| F[fa:fa-car Car]
```

Mermaid 语法

流程图 (Flowchart)

流程图由节点(几何形状)和边(箭头或线)组成。Mermaid 代码定义了如何创建节点和边,并适应不同的箭头类型、多向箭头以及与子图之间的任何链接。

节点(默认)

代码:

flowchart LR
    id

也可以用 graph 代替 flowchart

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

带有文本的节点

代码:

flowchart
    id[这是一段文本]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

包含 Unicode 的文本

可以使用 "" 将包含 Unicode 的文本括起来。

代码:

flowchart
    id["这是 ❤ Unicode"]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

方向

可在图表关键词后添加方向关键词来控制图表方向,流程图可用的方向关键词有以下几种:

  • TB (Top to bottom) : 从上到下
  • TD (Top-down) : 同 TB,从上到下
  • BT (Bottom to top) : 从下到上
  • RL (Right to left) : 从右到左
  • LR (Left to right) : 从左到右

代码:

flowchart TD
    开始 --> 结束
flowchart LR
    开始 --> 结束

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

节点形状

节点的默认形状为矩形,我们可以通过改变包裹文本的符号来改变节点的形状。

圆角矩形节点
flowchart LR
    id1(这是一段文本)

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

胶囊形节点
flowchart LR
    id1([这是一段文本])

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

卷轴形节点
flowchart LR
    id1[[这是一段文本]]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

圆柱形节点
flowchart LR
    id1[(这是一段文本)]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

圆形节点
flowchart LR
    id1((这是一段文本))

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

旗帜形节点
flowchart LR
    id1>这是一段文本]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

试试看,反过来写会怎样?

菱形节点
flowchart LR
    id1{这是一段文本}

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

六角形节点
flowchart LR
    id1{{这是一段文本}}

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

平行四边形节点
flowchart LR
    id1[/这是一段文本/]
flowchart LR
    id1[\这是一段文本\]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

梯形节点
flowchart LR
    id1[/这是一段文本\]
flowchart LR
    id1[\这是一段文本/]

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

双圆节点
flowchart LR
    id1(((这是一段文本)))

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

节点之间的连接

节点之间可用箭头或者线连接,箭头或线的类型可通过关键词来指定。可以有不同类型的链接或将文本字符串附加到链接上。

箭头链接
flowchart LR
    A-->B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

线链接
flowchart LR
    A---B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

带有文本的线链接
flowchart LR
    A-- 这是一段文本 ---B

或者

flowchart LR
    A---|这是一段文本|B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

带有文本的箭头链接
flowchart LR
    A-- 这是一段文本 -->B

或者

flowchart LR
    A-->|这是一段文本|B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

虚线箭头链接
flowchart LR
   A-.->B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

带有文本的虚线箭头链接
flowchart LR
   A-. 文本 .-> B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

粗线箭头链接
flowchart LR
   A ==> B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

带有文本的粗线箭头链接
flowchart LR
   A == 文本 ==> B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

隐形链接

在某些情况下,当您希望更改节点的默认位置时,这可能是一个有用的工具。

flowchart LR
    A ~~~ B

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

链式链接

可以在一行声明多个链接:

flowchart LR
   A -- 文本1 --> B -- 文本2 --> C

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

也可以在一行声明多个节点链接:

flowchart LR
   a --> b & c--> d

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

然后,我们可以以一种非常富有表现力的方式描述依赖关系,只用下面一行:

flowchart TB
    A & B--> C & D

效果:

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

使用基础的代码来描述这样的关系至少需要 4 行代码:

flowchart TB
    A --> C
    A --> D
    B --> C
    B --> D

一行的写法虽然简洁,但会使得代码难以阅读,所以建议不要过度使用这样的写法。

新的箭头类型

除了一般的箭头外,Mermaid 还支持以下 2 种箭头类型:

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

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

双向箭头

箭头可以是双向的:

flowchart LR
    A o--o B
    B <--> C
    C x--x D

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

链接长度

流程图中的节点会被分到不同层级,链接的长度通常基于它跨越的层级,链接可以跨越任意数量的层级。除此之外,你也可以通过 增加破折号 - 的数量来加长一个链接。

flowchart LR
    A[Start] --> B{Is it?}
    B -->|Yes| C[OK]
    C --> D[Rethink]
    D --> B
    B ---->|No| E[End]

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

链接的长度可能超过总的层级数

当链接标签写在链接中间时,必须在链接的右侧添加额外的破折号 -

flowchart LR
    A[Start] --> B{Is it?}
    B -- Yes --> C[OK]
    C --> D[Rethink]
    D --> B
    B -- No ----> E[End]

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

对于虚线或粗线,需要添加的是等号 = 或 点号 .,如下表所示:

长度 1 2 3
正常线 --- ---- -----
正常线带箭头 --> ---> ---->
粗线 === ==== =====
粗线带箭头 ==> ===> ====>
虚线 -.- -..- -...-
虚线带箭头 -.-> -..-> -...->
破坏语法的特殊字符

为了呈现更多可能的字符,我们可以将文本放在引号 "" 内:

flowchart LR
    id1["这是一段(文本)"]

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

转义字符的实体代码

可以使用字符的实体代码来表示一个字符:

flowchart LR
        A["A double quote:#quot;"] -->B["A dec char:#9829;"]

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

子图

语法如下:

subgraph title
    graph definition
end

例:

flowchart TB
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

我们也可以为子图设置显式 ID:

flowchart TB
    c1-->a2
    subgraph ide1 [one]
    a1-->a2
    end

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

跨越子图的链接

可以为流程图添加跨越子图的链接:

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

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

子图的方向

子图的方向可以通过添加 direction 和方向关键词来指定:

flowchart LR
  subgraph TOP
    direction TB
    subgraph B1
        direction RL
        i1 -->f1
    end
    subgraph B2
        direction BT
        i2 -->f2
    end
  end
  A --> TOP --> B
  B1 --> B2

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

交互

我们可以为节点绑定 JavaScript 函数或是 URL 链接,当用户点击节点时,会触发绑定的函数或是打开链接。

<script>
  const callback = function () {
    alert('A callback was triggered');
  };
</script>

```mermaid
flowchart LR
    A-->B
    B-->C
    C-->D
    click A callback "Tooltip for a callback"
    click B "https://www.github.com" "This is a tooltip for a link"
    click A call callback() "Tooltip for a callback"
    click B href "https://www.github.com" "This is a tooltip for a link"
```

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

注释

使用 %% 可为 Mermaid 代码添加注释,注释不会被渲染。

flowchart LR
%% this is a comment A -- text --> B{node}
   A -- text --> B -- text2 --> C

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

样式和类

Mermaid 中的节点和链接都可以自定义样式:

flowchart LR
    id1(Start)-->id2(Stop)
    style id1 fill:#f9f,stroke:#333,stroke-width:4px
    style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

还可以构造类来为一类节点或链接添加样式:

flowchart LR
    A:::someclass --> B --> C:::someclass
    classDef someclass fill:#f96

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

对 fontawesome 的基本支持

当环境中引入了 fontawesome 时,Mermaid 也能很好地支持这些图标:

flowchart TD
    B["fab:fa-twitter for peace"]
    B-->C[fa:fa-ban forbidden]
    B-->D(fa:fa-spinner)
    B-->E(A fa:fa-camera-retro perhaps?)

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid

空格和分号
  • 分号在早期版本中用于标记图形声明的结束,现在不使用分号也可以渲染,当然如果你加入了分号,也不会影响图表渲染。
  • 在顶点和链接之间只允许有一个空格。但是,顶点和它的文本之间以及链接和它的文本之间不应该有任何空格。不加入空格也可以正常渲染,加入的空格是为了更好的可读性。
flowchart LR
    A[Hard edge] -->|Link text| B(Round edge)
    B --> C{Decision}
    C -->|One| D[Result one]
    C -->|Two| E[Result two]

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart),Markdown,流程图,markdown,标记语言,mermaid文章来源地址https://www.toymoban.com/news/detail-522894.html

到了这里,关于Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源流程图表库(01):Mermaid.js生成流程图、时序图、甘特图等

    Mermaid.js是一个用于生成流程图、时序图、甘特图等各种图表的开源库。它使用简洁的文本语法来描述图表结构,并将其转换为可视化的图形。 Mermaid.js的主要特点包括: 简洁易用 :Mermaid.js使用简单的文本语法来描述图表结构,不需要编写复杂的代码。通过简单的几行文本,

    2024年04月13日
    浏览(37)
  • AIGC:通过 ChatGPT 和 Mermaid 实现语言描述生成流程图实践

    本文旨在介绍如何使用 ChatGPT 和 Mermaid 语言生成流程图的技术。在现代软件开发中,流程图是一种重要的工具,用于可视化和呈现各种流程和结构。结合 ChatGPT 的自然语言处理能力和 Mermaid 的简单语法,可以轻松地将文本描述转化为图形表示,使技术文档更具可读性和易懂性

    2024年02月15日
    浏览(60)
  • Markdown 流程图绘制详解

    ✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。 🔥如需转载请参考【转载须知】 M

    2024年01月16日
    浏览(49)
  • markdown绘制流程图相关代码片段记录

    有时候会使用typora来绘制一些流程图,进行编码之类的工作,在网络搜集了一些笔记,做个记录,方便日后进行复习,相关的记录如下: 每次作图时,代码以「graph 布局方向」开头,如: TB(Top Bottom)表示从上向下布局,另外三种是 BT LR(Left Right) RL 不同种类的括号对应不

    2024年02月19日
    浏览(45)
  • 【笔记】markdown易忘速查(对勾/表格/符号/流程图)

    https://www.runoob.com/markdown/md-tutorial.html 这里有较系统的免费教程,本篇只是个人的使用备忘录,仅供参考 1 2 3 4 百度 使用时删除占位符中间的空格 占位符 符号 cross; ✗ check; ✓ #9744; ☐ #9745; ☑ #10004; ✔ nbsp; 空格 f ( x ) = s i n ( x ) f(x) = sin(x) f ( x ) = s in ( x ) f ( x ) = s i n ( x ) f(x

    2024年02月16日
    浏览(44)
  • 提升绘图效率不再难,看看这8款AI流程图软件,一键快速生成流程图!

    流程图是表示流程、系统和思想的重要视觉辅助工具。在当今数字时代,AI技术的出现已经彻底改变了制作流程图的方式。 在本文中,我们将与各位分享 8款好用的AI流程图软件 ,借助每款软件内置的AI能力,可以快速绘制出一份完整的流程图,以简化和增强你的绘图体验。

    2024年02月03日
    浏览(57)
  • 用图说话——流程图进阶

    目录 一、基本流程图 二、时序流程图 经常阅读歪果仁绘制的流程图,感觉比较规范,自己在工作中也尝试用他们思维来绘图,这是一个小栗子: 在进行Detail设计过程中,一般的绘图软件显得捉襟见肘,不如使用excel,时序图如此清晰,那么软件质量也是很高的,这是一个小

    2024年02月08日
    浏览(30)
  • 论文工具——写论文好用的绘图工具(甘特图+流程图+网络模型图+泳道图)

    在写HiFi-GAN论文的代码阅读过程中,我发现仅仅通过文字来描述网络结构,不够详细,所以想绘制出网络结构图,更加具象化的描述出网络结构。想去花了,才发现之前都是通过在线绘图网站画的,费时费力,所以想找一些专门的网站化出比较规范并且高质量的图。一方面是

    2024年02月16日
    浏览(41)
  • 前端Web实战:从零打造一个类Visio的流程图拓扑图绘图工具

    大家好,本系列从Web前端实战的角度,给大家分享介绍如何从零打造一个自己专属的绘图工具,实现流程图、拓扑图、脑图等类Visio的绘图工具。 免费好用、 专属自己的绘图工具 前端项目实战学习 如何从0搭建一个前端项目等基础框架 项目设计思路及优雅的架构技巧 开源项

    2024年02月16日
    浏览(34)
  • 流程图实现,基于vue2实现的流程图

    flex布局 + 伪元素实现竖直的连接线+组件递归 2.1基础的(未截全,大致长这样)  2.2带有收缩功能的,可以展开和收缩并显示数量     4.项目源码地址 GitHub - yft-code/flow: 流程图 纯css实现流程图

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包