概述:Mermaid

  • Mermaid‌是一种基于Javascript的、开源文本驱动图表生成工具/绘图工具,,使用类似于Markdown的低代码语法,它允许用户使用简单的文本语言来创建各种类型的图表,如流程图、时序图、甘特图和饼状图等。
  • Mermaid可以作为JavaScript库或独立的命令行工具使用,支持在HTML、Markdown或AsciiDoc文档中嵌入图表定义。‌

Mermaid的主要绘制功能

Mermaid能绘制哪些图?

  • 饼状图:使用pie关键字,具体用法后文将详细介绍
  • 流程图:使用graph关键字,具体用法后文将详细介绍
  • 序列图:使用sequenceDiagram关键字
  • 甘特图:使用gantt关键字
  • 类图:使用classDiagram关键字
  • 状态图:使用stateDiagram关键字
  • 用户旅程图:使用journey关键字

Mermaid的基本用法

  • HTMLMarkdown文件中引用Mermaid库和Mermaid CSS样式表‌。
  • 使用MermaidCLI工具在命令行中生成图表‌。
  • 使用MermaidAPI在自己的应用程序中生成图表‌。

Mermaid的语法基础

  • Mermaid的语法类似于Markdown,易于学习和使用。以下是一些基本的语法示例:

  • 定义节点‌

id[文字](矩形节点),id((文字))(圆角矩形节点),id>文字](旗帜状节点),id{文字}(菱形节点), ...

  • 定义连线‌

->(添加尾部箭头),--(单线),==(粗线),-.(虚线), ...

Mermaid的高级功能和使用场景

  • Mermaid支持自定义部署,可以通过调用API在应用程序中使用。
  • 它还可以与AI结合,实现一键生成图表的功能。
  • Mermaid优点在于其简单性可移植性,用户可以轻松地将图表定义嵌入到任何支持HTMLMarkdownAsciiDoc的文档中。

支持工具与集成

Mermaid 官网(支持免登录、在线绘制)

可能需要挂梯子

Markdown文档中集成Mermaid

  • mermaid的语法为代码块语法的执行功能,语言为 mermaid

  • 示例

'''mermaid!
# 注意,为此处展示需要,需要将3个'符号转为3个`符号 graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
'''

效果:

Obsidian 支持 Mermaid

'''mermaid!
graph LR
%%这是一条注释,在渲染图中不可见
A[Hard edge] -->|Link text| B(Round edge)
B --> C{Decision}
C -->|One| D[Result one]
C -->|Two| E[Result two]
'''

  • 相关文献

设置 > 外观 > 向下滚动到 CSS 代码片段 > 点击右侧的文件夹图标,打开 snippets 文件夹

Tyora 支持 Mermaid

  • Typora(一款美观的Markdown编辑器)支持以下代码块画流程图
  • flow:流程图,会自动被 flowchart.js 渲染。
  • sequence:序列图,会自动被 js-sequence 解析和渲染
  • mermaidmermaid图。
  • 要使 Typora 支持代码绘图,需要对 Typora 软件进行相应设置:
  • 文件】-【偏好设置…】-【Markdown】-【Markdown扩展语法】:启用图表 (序列图、流程图和Marmaid图)
  • 并重启 Typora 生效。

  • TyporaMarkdown 文档导出为 HTMLPDFepubdocx 文件格式时,相关渲染图也将包括在内;但是当 TyporaMarkdown 导出为当前版本的其他文件格式时,相关渲染图将不包括在内

'''mermaid!
# 注意,为此处展示需要,需要将3个'符号转为3个`符号 graph LR
Start --> Stop
''' '''mermaid
graph LR A[方形] -->B(圆角)
B --> C{条件a}
C -->|a=1| D[结果1]
C -->|a=2| E[结果2]
F[横向流程图]
'''

Mermaid的语法与经典案例

CASE:朱元璋家谱简图

graph LR
emperor((朱八八))-.子.->朱五四-.子.->朱四九-.子.->朱百六 朱雄英--长子-->朱标--长子-->emperor
emperor2((朱允炆))--次子-->朱标
朱樉--次子-->emperor
朱棡--三子-->emperor
emperor3((朱棣))--四子-->emperor
emperor4((朱高炽))--长子-->emperor3

CASE:饼图

  • 在线渲染器:
  • Online FlowChart & Diagrams Editor

https://mermaid-js.github.io/mermaid-live-editor/edit

  • 语法 —— 仅供参考,建议直接看实例
  • pie关键字开始图表
  • 然后,使用title关键字及其在字符串中的值,为饼图赋予标题。(这是可选的)
  • 数据部分
  • " "内写上分区名。
  • 分区名后使用:作为分隔符
  • 分隔符后写上数值,最多支持2位小数——数据会以百分比的形式展示
  • 实例
pie
title 为什么总是宅在家里?
"喜欢宅" : 15
"天气太热或太冷" : 20
"穷" : 500

CASE: 流程图

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

方向

  • 方向:用于开头,声明流程图的方向。
  • graphgraph TBgraph TD:从上往下
  • graph BT:从下往上
  • graph LR:从左往右
  • graph RL:从右往左

节点

  • 无名字的节点:直接写内容,此时结点边框为方形;节点内容不支持空格
  • 有名字的节点:节点名后书写内容,内容左右有特定符号,结点边框由符号决定;节点内容可以有空格

下面的实例中,没有为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

注释

  • 注释:在行首加入%%即可。
graph LR
%%这是一条注释,在渲染图中不可见
A[Hard edge] -->|Link text| B(Round edge)
B --> C{Decision}
C -->|One| D[Result one]
C -->|Two| E[Result two]

其他

  • 子图:需要将graph关键字改为flowchart,在代码段的开始加入subgraph,尾部加入end
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

Y 推荐资源

mermaid 【推荐】

  • mermaid

2025.02.09 : 6.9k fork / 75.4k star

Slogan : 以类似于标记的方式从文本生成流程图或序列图

flow

  • flow

2025.02.09 : 1.2k fork / 8.6k star

sequence.js

  • sequence.js

2025.02.09 : 1.1k fork / 7.8k star

X 参考文献

流程图 / UML时序图 / 甘特图 /

[图形绘制/流程图] Mermaid : 开源的低代码图形绘制语言、协议及工具的更多相关文章

  1. 2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:http://www.showmeai.tech/tutorials/40 机器学习实战系列:http://www.showmeai.tech/tut ...

  2. 程序员为什么害怕低代码?ZT

    转自:https://www.jianshu.com/p/cd89fe94cd30 低代码 是一种近些年兴起的企业软件快速开发技术和工具.借助低代码使用者无需编码即可完成企业应用的常用功能,少量编码扩 ...

  3. 企业应用开发的大趋势,65%的应用开发将通过低代码完成 ZT

    全球知名的咨询公司Gartner于近日发表了最新版的<低代码开发平台魔力象限>,并在报告中指出,到2024年65%的应用开发工作都将通过低代码的方式完成.Gartner长期关注软件开发领域 ...

  4. 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端

    前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...

  5. rtvue-lowcode:一款基于uniapp框架和uview组件库的开源低代码开发平台

    rtvue-lowcode低代码开发平台 rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app.小程序等项目 ...

  6. 开源低代码开发平台entfrm2.1.0更新

    开源低代码开发平台entfrm2.1.0更新 新功能 代码生成支持主子表,支持预览: 新增多应用顶部菜单与左侧菜单联动: element-ui升级到2.15.1: 新增表单管理,集成avue-from ...

  7. 什么是低代码(Low-Code)?

    阿里云 云原生应用研发平台EMAS 彭群(楚衡) 一.前言 如果选择用一个关键词来代表即将过去的2020年,我相信所有人都会认同是"新冠".疫情来得太快就像龙卷风,短短数月就阻断了 ...

  8. 基于BPM的低代码开发平台应具备什么功能

    一个BPM平台应该具备什么样的功能    用户在选型BPM软件的时候往往不知道该关注哪些功能,什么样的BPM软件能满足国内企业应用需求,笔者从多年BPM研发和实施经验提炼了中国特色BPM应该具备的功能 ...

  9. 图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂

    行业背景 随着中国制造 2025 计划的提出,新一轮的工业改革拉开序幕.大数据积累的指数级增长为智能商业爆发奠定了良好的基础,传统制造业高污染.高能耗.低效率的生产模式已不符合现代工业要求. 图扑拖拽 ...

  10. 转+更新 Graphviz 教程,例子+ 高级应用 写代码,编程绘制架构图(分层拓扑图) 转自官网

    1. Graphviz介绍 Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具. 它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”. Graphviz提供了dot语言来 ...

随机推荐

  1. TortoiseGit之私钥配置

    1.使用git命令生成公钥和私钥 ssh-keygen -t rsa -C "git邮箱账号" 三次回车,即可在~/.ssh/ 生成密钥对 id_rsa id_rsa.public ...

  2. Blazor 组件库 BootstrapBlazor 中AutoComplete组件介绍

    AutoComplete组件介绍 AutoComplete组件和文本框基本上样子是一样的,只不过AutoComplete组件还带有一个下拉列表,可以从中选择对应的内容. 其同样继承自Bootstrap ...

  3. Codeforces Round 895 (Div. 3)

    B. The Corridor or There and Back Again 题解 考虑二分答案 \(check\)时判断是否\(s_i \leq 2*(k - d_i),k\geq d_i\) c ...

  4. CVE-2023-32233 Linux 内核 UAF 漏洞分析与利用

    Linux 内核 nftable 模块在处理匿名 set 时存在 UAF. ‍ 漏洞分析 漏洞成因是 nf_tables_deactivate_set​ 在释放匿名 set 时没有将 set 的标记设 ...

  5. 使用腾讯云对象存储 COS 作为 Velero 后端存储,实现集群资源备份和还原

    Velero(以前称为 Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷,可以在 TKE 集群或自建 Kubenetes 集群中 ...

  6. Alain 配置管理

    app/assets/tmp/app-data.json 中保存了默认的一些应用配置 app 应用配置 user 默认用户配置 menu 菜单配置信息 在 App.Module 中,使用 APP_IN ...

  7. django目录结构、app概念和三板斧的初步介绍

    目录 一.django app(应用)的概念 概念 命令行创建应用 pycharm创建应用 创建应用注意事项 二.django主要目录结构 三.django小白必会三板斧 一.django app(应 ...

  8. shell 获取 目录名 当前目录名

    Four ways to extract the current directory name By  Sergio Gonzalez Duran on November 06, 2007 (9:00 ...

  9. Qt编写的项目作品9-音频综合应用示例

    一.功能特点 自动计算音频振幅,绘制音频振幅曲线和音频数据曲线. 支持音频录制,可选音频输入设备.采样频率.通道等参数,Qt5默认保存wav格式,Qt6默认保存mp3格式,Qt6可选wma.aac等格 ...

  10. 移动端开源 IM 框架 MobileIMSDK v6.0 发布!

    一.更新内容简介 本次为主要版本更新(本次更新内容见文末"MobileIMSDK v6.0更新内容 "一节),强势升级,将同时支持TCP.UDP.WebSocket三种协议,精心封 ...