markdown中画图功能mermaid
mermaid
Mermaid 是一种开源的可交互式的数据可视化库,它使用 Markdown 标记语言来生成图表和流程图。它通常用于生成网站或文档中的图表。Mermaid 不属于任何公司,而是一个由社区开发和维护的开源项目。
官方网站: https://mermaid-js.github.io/
启用 markdown 绘图块与代码块非常像:
```mermaid··· 绘图指令 ···```
需要用到关键字mermaid
1.图(graph)
绘制流程图的第一行是流程图的声明,包含关键字 graph 和流程图方向。
流程图方向包含以下标识:
- TB,从上到下
- TD,从上到下
- BT,从下到上
- RL,从右到左
- LR,从左到右
graph LR
A-->B
B-->C
C-->D
D-->A
例如:
节点形状
- 默认节点 A
- 文本节点 B[bname]
- 圆角节点 C(cname)
- 圆形节点 D((dname))
- 非对称节点 E>ename]
- 菱形节点 F{fname}
graph TB
%% 我是备注
A
B[bname]
C(cname)
D((dname))
E>ename]
F{fname}
连线形状
节点间的连接线有多种形状,可以在连接线中加入标签:
graph LR
箭头连接A1-->B1
开放连接A2---B2
可以增长A2.1----B2.1标签连接A3--text---B3
箭头标签连接A4--text-->B4虚线开放连接A5-.-B5
虚线箭头连接A6-.->B6标签虚线连接A7-.text.-B7
标签虚线箭头连接A8-.text.->B8粗线开放连接A9===B9
粗线箭头连接A10==>B10
标签粗线开放连接A11==text===B11
标签粗线箭头连接A12==text==>B12
子图
markdown 的语法中,还允许用户添加子图,子图就是以 subgraph关键字标识的graph,并以end结尾,但所有节点名都是全局的,并不隔离,因此子图之间是可以相互连接的。
graph LRsubgraph g1a1*-->b1*endsubgraph g2a2*-->b2*endsubgraph g3a3*-->b3*end
a3*-->a2*
a3*–>a2* 放在哪里都可以
2.二叉树
graph TB
A((A)) %%(())代表圆
B((B))
C((C))
D((D))
E((E))A---B
A---C
B---F(( )) %%F中为空字符
style F fill: #f100,stroke-width:0px %%设置F属性为填充为白色,边框宽度为0
B---D
C---E
C---G(( )) %%G中为空字符
style G fill: #f100, stroke-width:0px %%设置F属性为填充为白色,边框宽度为0linkStyle 2 stroke:#0ff,stroke-width:0px %%将第3条连接线的宽度设为0,就看不见这条线了
linkStyle 5 stroke:#0ff,stroke-width:0px;%%将第16条连接线的宽度设为0,就看不见这条线了
eg2
我常用的
结构含义
graph TB
1((36))---2((m))
1和2表示结点,括号内的内容是结点的权,或者名字。
结点含义
- 1((1)):根
- 21((2)):第二层的第一个结点
- 同理31((3)):第三层的第一个结点
- 3n1(( )):第三层第一个空结点
graph TB%%左子树
1((1))---21((2))---31((3))---41((4))
21---3n1(( ))
31---4n1(( ))%%右子树
1((1))---22((2))---3n2(( ))
22---32((3))%%隐藏结点
style 3n1 fill: #f100,stroke-width:0px
style 4n1 fill: #f100,stroke-width:0px
style 3n2 fill: #f100,stroke-width:0px
%%隐藏路径
linkStyle 3,4,6 stroke:#0ff,stroke-width:0px
采用二叉树的顺序存储——完全二叉树
graph TB%%左子树
1((1))---2((1))---4((1))---8((4))
2---5((2))---10((10))
4---9(( ))
5---11(( ))%%右子树
1((1))---3((4))%%隐藏结点
style 9 fill: #f100,stroke-width:0px
style 11 fill: #f100,stroke-width:0px
%%隐藏路径
linkStyle 5,6 stroke:#0ff,stroke-width:0px
3.UML类图(classDiagram)
绘制UML类图的关键字是classDiagram。
类关系连线
- 实现:<|… 示例:
A<|..B:实现类与接口的关系 - 继承:<|-- 示例:
C <|-- D:继承子类与父类的关系 - 组合:*-- 示例:
E *-- F:组合整体与部分的关系,部分不能离开整体单独存在。 - 聚合:o-- 示例:
G o-- H:聚合整体与部分的关系,部分可以离开整体单独存在。 - 关联:“1…" – "1…” 示例:
I "1..*" -- "1..*" J :关联一种拥有关系,一个类知道另一个类的属性和方法。 - 依赖:<-- 示例:
K <-- L :依赖一种使用关系,一个类的实现需要另一个类的协助。
例如:
classDiagramclass A
class B
A <|.. B:实现class C
class D
C <|-- D:继承class E
class F
E *-- F:组合class G
class H
G o-- H:聚合class I
class J
I "1..*" -- "1..*" J :关联class K
class L
K <-- L :依赖
类成员变量和方法
classDiagram
class Student {+String name+int age- Address address+getAddress() Address-setAddress() void
}
泛型
使用~代替java中的<>表示泛型
classDiagram
class A{+List~String~ list
}
修饰词
| 可见性 | 表示 |
|---|---|
| public | + |
| private | - |
| protected | # |
类的注释
使用<<注释>>可以在类名上添加注释,以表示接口、抽象类、枚举等
| 类型 | 表示 |
|---|---|
| 接口 | <> |
| 抽象类 | <> |
| 枚举 | <> |
classDiagramclass A {<<interface>>
}
class B {<<abstract>>
}
class C {<<enum>>
}
class D {<<任何你想要注释的内容>>
}
例子
classDiagram
class Run {<<interface>>+run() void
}
class Animal {<<abstract>>+run() void
}
class Dog {-Color color+eat(Food) void+run() void
}
class Color {<<enum>>-int r-int g-int b
}
class Food {+String name
}
Run <|.. Animal
Animal <|-- Dog
Dog <-- Food
Dog o--Color
4.时序图(sequenceDiagram)
用来描述两个或更多模块之间的交互过程首选就是时序图,markdown 也同样提供了绘制时序图的功能。
绘制时序图的关键字是sequenceDiagram。
参与者–模块声明
作为多个模块之间交互过程的表现,首要的工作就是要声明共有哪些模块。
我们需要通过participant关键字进行声明,声明的顺序就是模块从左到右的展示顺序。
sequenceDiagram
participant B
participant A
语法:【对象1】【连线】【对象2】:【消息内容】
sequenceDiagram
客户端-->>服务器:发起请求
连线
markdown 时序图支持以下连线方式:
- 无箭头实线 ->
- 有箭头实线 ->>
- 无箭头虚线 –>
- 有箭头虚线 –>>
- 带x实线 -x
- 带x虚线 –x
高级特性
在实际的使用场景中,往往并不是这样简单地相互通信,而是需要分支、循环等特殊处理,markdown也同样可以支持。
循环
loop Loop_text ... statements... end
分支
alt Describing_text
...statements...
else
...statements...
end *# 推荐在没有else的情况下使用 opt(option,选择)* opt Describing_text
...statements...
End
注释
注释或者称之为便签,用来对模块做额外标记。
- 单个标签
note [right of | left of][Actor]: Text
- 给多个模块打标签
note over [Actor1, Actor2...]:Text
5.甘特图(gantt)
在项目管理中,甘特图是一个非常得力的好帮手,通过甘特图,我们可以对整个项目的进展情况一目了然。
用 markdown 绘制甘特图十分简单快捷。
他有以下关键字:
- dateFormat – 日期格式
- section – 模块声明
- Completed – 已经完成
- Active – 进行中
- Future – 待后续处理
- crit – 关键阶段
下面是一个完整的甘特图展示:
ganttdateFormat YYYY-MM-DDtitle Adding GANTT diagram functionality to mermaidsection A sectionCompleted task :done, des1, 2014-01-06,2014-01-08Active task :active, des2, 2014-01-09, 3dFuture task : des3, after des2, 5dFuture task2 : des4, after des3, 5dsection Critical tasksCompleted task in the critical line :crit, done, 2014-01-06,24hImplement parser and jison :crit, done, after des1, 2dCreate tests for parser :crit, active, 3dFuture task in critical line :crit, 5dCreate tests for renderer :2dAdd to mermaid :1dsection DocumentationDescribe gantt syntax :active, a1, after des1, 3dAdd gantt diagram to demo page :after a1 , 20hAdd another diagram to demo page :doc1, after a1 , 48hsection Last sectionDescribe gantt syntax :after doc1, 3dAdd gantt diagram to demo page : 20hAdd another diagram to demo page : 48h
参考
如何用mermaid画二叉树? - Numb的回答 - 知乎
相关文章:
markdown中画图功能mermaid
mermaid Mermaid 是一种开源的可交互式的数据可视化库,它使用 Markdown 标记语言来生成图表和流程图。它通常用于生成网站或文档中的图表。Mermaid 不属于任何公司,而是一个由社区开发和维护的开源项目。 官方网站: https://mermaid-js.git…...
SCI论文丨机器学习与深度学习论文
目录 第一章、ChatGPT-4o使用方法与技巧 第二章、ChatGPT-4o辅助文献检索、总结与分析 第三章、ChatGPT-4o辅助学术论文选题、创新点挖掘与实验方案设计 第四章、ChatGPT-4o辅助学术论文开题与大纲生成 第五章、ChatGPT-4o辅助学术论文写作马拉松活动介绍 第六章、ChatGPT…...
linux系统编程(二)
1、fcntl #include <unistd.h> int fcntl(int fd, int cmd, ...)fcntl用于控制文件描述符,该系统调用有很多功能,功能用cmd来控制,fcntl后面的参数根据cmd来填充。 我们常用的cmd有: F_GETFL:获取文件状态标志…...
uni-app登录界面样式
非常简洁的登录、注册界面模板,使用uni-app编写,直接复制粘贴即可,无任何引用,全部公开。 废话不多说,代码如下: login.vue文件 <template><view class"screen"><view class"…...
windows C#-定义抽象属性
以下示例演示如何定义抽象属性。 抽象属性声明不提供属性访问器的实现,它声明该类支持属性,而将访问器实现留给派生类。 以下示例演示如何实现从基类继承抽象属性。 此示例由三个文件组成,其中每个文件都单独编译,产生的程序集由…...
ERROR: KeeperErrorCode = NoNode for /hbase/master
原因分析 通过上面的情景模拟,我们可以看到报错的原因在于zookeeper中出现问题,可能是zookeeper中的/hbase/master被删除,或者是在hbase集群启动之后重新安装了zookeeper,导致zookeeper中的/hbase/master节点数据异常。 1. 停止…...
Deepin 23 踩坑记
(首发地址:学习日记 https://www.learndiary.com/2024/12/deepin23-questions/) Deepin 23 是由统信软件技术有限公司牵头开发一款开源 Linux 桌面操作系统(参考链接1),从2022年发布预览版(参考…...
mysql笔记——索引
索引 InnoDB采用了B树索引结构。 相比于二叉树,层级更少,搜索效率高。 B树中叶子节点和非叶节点都会存储数据,导致段页式存储中一页存储的键值减少,指针也会减少,要同样保存大量数据,只能增加树的高度&a…...
考研数据结构——简答题总结
数据结构的4种基本结构及特点: 数组(Array): 特点:数组是一种线性数据结构,使用连续的内存空间存储元素,可以通过索引直接访问任意位置的元素。优点:访问速度快,因为元…...
Qt Creator 里面设置MSVC 为 utf-8
在使用 Qt Creator 和 MSVC(Microsoft Visual C++)编译器进行开发时,我们可能会遇到中文乱码的问题。这通常是由于编码设置不正确导致的。 在 Qt Creator 中,你可以通过以下步骤设置默认编码为 UTF-8: 打开 Qt Creator,选择菜单栏中的“工具”(Tools) > “选项”(Opti…...
Java阶段三06
第3章-第6节 一、知识点 理解MVC三层模型、理解什么是SpringMVC、理解SpringMVC的工作流程、了解springMVC和Struts2的区别、学会使用SpringMVC封装不同请求、接收参数 二、目标 理解MVC三层模型 理解什么是SpringMVC 理解SpringMVC的工作流程 学会使用SpringMVC封装请求…...
Helm安装Mysql8主从复制集群
目录 一、Helm安装 二、安装mysql 1、拉取镜像 2、修改配置文件 3、创建mysql-secret 4、安装 一、Helm安装 这里不再赘叙,具体安装请参考官网 Helm | 快速入门指南 二、安装mysql 1、拉取镜像 #添加仓库 helm repo add bitnami https://charts.bitnami.c…...
嵌入式基础:Linux C语言:Day7
重点: strlen()函数\strcpy()函数\strcat实现\strcmp()实现 数组的清空:bzero函数、memset函数 一、字符数组 <1> 概念 字符数组本质上就是一个数组,保存一个个字符,也一般用来保存字符串 字符串由多个字符组成的一个字符…...
Tablesaw封装Plot.ly实现数据可视化
上文介绍tablesaw的数据处理功能,本文向你展示其数据可视化功能,并通过几个常用图表示例进行说明。 Plot.ly包装 可视化是数据分析的重要组成部分,无论你只是“查看”新数据集还是验证机器学习算法的结果。Tablesaw是一个开源、高性能的Java…...
RAG与Embedding:现代NLP的核心技术
本篇文章简单梳理我在了解RAG以及Embedding技术时的想法,仅供参考 文章目录 1. 引言背景为什么要关注RAG与Embedding技术 2. 基础概念与原理2.1 什么是RAG (Retrieval-Augmented Generation)定义工作流程优点与适用场景 2.2 什么是Embedding定义作用 3. Embedding在…...
力扣每日一题 - 1812. 判断国际象棋棋盘中一个格子的颜色
题目 还需要你前往力扣官网查看详细的题目要求 地址 1.给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。2.如果所给格子的颜色是白色,请你返回 true,如果是黑色ÿ…...
Map 那些事儿
1. map 的基本结构 Go 的 map 是一种哈希表,其核心思想是通过哈希函数将键映射到某个位置(桶)以存储对应的值。它主要包含以下关键部分: •桶(bucket):存储键值对的容器,map 中的元…...
GCP Case:MountKirk Games
游戏后端 根据游戏活动动态放大或缩小。 连接到托管的nos0l数据库服务。 运行定制的linux发行版。 游戏分析平台 根据游戏活动来扩大或缩小规模直接处理来自游戏服务器的传入数据。 处理由于移动网络缓慢而迟到的数据。 通过sql查询来访问至少10tb的历史数据 处理由用户…...
[创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机
目录 一、UTStarcom(UT斯达康)的发展历程 1、创立与初期发展 2、快速成长与上市 3、技术创新与业务拓展 4、战略调整与持续发展 二、从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机 1、企业初期发展的顺利表现 2、顺…...
高级数据结构-树状数组
介绍 树状数组的推导 两个基础操作 模板-acwing795. 前缀和 #include<bits/stdc.h> using namespace std;const int N 1e610; int c[N]; int lowbit(int x){return x & -x; }int query(int x){int ans 0;for(; x; x - lowbit(x)) ans c[x];return ans; }void add…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
