Markdown 达人必备!轻松几步画出专业流程图

news/2025/3/19 11:58:22/文章来源:https://www.cnblogs.com/PeterJXL/p/18341526

流程图,顾名思义,就是表示一个事件或活动的流程的图示。

快速入门

最简单的例子:从 A 到 B

graph TDA --> B

效果:

graph TDA --> B

注意起始的关键字“grpah”是必须的,表明这是流程图。

后续介绍时序图时,该关键字也要改为时序图的关键字:sequenceDiagram。

方向

接下来我们讲讲基本的概念。流程图中,可以有方向:

  • TB、TD:从上到下
  • BT:从下到上
  • RL:从右到左
  • LR:从左到右

从下到上:

graph BTA --> B 

效果:

graph BTA --> B

从右到左:

graph RLA --> B 

效果:

graph RLA --> B

从左到右:

graph LRA --> B 

效果:

graph LRA --> B

最常用的布局方向是

  • 从上向下
  • 从左向右

当然也允许从下向上画、从右向左画,但是这两种很少见。

基本图形

节点除了矩形,还能换成其他形状,这里列出部分:

graph TDid[带文本的矩形]id4(带文本的圆角矩形)id3>带文本的不对称的矩形]id1{带文本的菱形}id2((带文本的圆形))

效果:

graph TDid[带文本的矩形]id4(带文本的圆角矩形)id3>带文本的不对称的矩形]id1{带文本的菱形}id2((带文本的圆形))

注意,每个形状都是有各自含义的:

  • 圆角矩形:表示开始和结束
  • 矩形:表示过程,也就是整个流程中的一个环节
  • 菱形:表示判断、决策
  • 圆形:表示连接。为避免流程过长或有线段交叉,可将流程切开,圆形即相当于切口处的连接头(成对出现)

graph LRbegin(开始) --> open[把冰箱门打开] --> put[把大象放进去] --> point((连接 A ))pointB((连接 A )) --> close[把冰箱门关上] --> close2(结束)

连接线

节点之间的连线,有如下类型:

  • A --> B​:A 带箭头指向 B
  • A --- B​:A 不带箭头指向 B
  • A -.- B​:A 用虚线指向 B
  • A -.-> B​:A 用带箭头的虚线指向 B
  • A ==> B​:A 用加粗的箭头指向 B
  • A -- 描述 --- B​: A 不带箭头指向 B 并在中间加上文字描述
  • A -- 描述 --> B​: A 带箭头指向 B 并在中间加上文字描述
  • A -. 描述 .-> B​: A 用带箭头的虚线指向 B 并在中间加上文字描述
  • A == 描述 ==> B​: A 用加粗的箭头指向 B 并在中间加上文字描述

注意,不同形状的线其实也有各自的含义。如果想要专业一点,可以专门去查查相关文档,什么情况用什么线。

示例:

graph LRA[A] --> B[B] A1[A] --- B1[B] A4[A] -.- B4[B] A5[A] -.-> B5[B] A7[A] ==> B7[B] A2[A] -- 描述 --- B2[B] A3[A] -- 描述 --> B3[B] A6[A] -. 描述 .-> B6[B] A8[A] == 描述 ==> B8[B]

效果:

graph LRA[A] --> B[B] A1[A] --- B1[B] A4[A] -.- B4[B] A5[A] -.-> B5[B] A7[A] ==> B7[B] A2[A] -- 描述 --- B2[B] A3[A] -- 描述 --> B3[B] A6[A] -. 描述 .-> B6[B] A8[A] == 描述 ==> B8[B]

子流程图

语法:

subgraph titlegraph definition
end

示例:

graph TBc1-->a2subgraph onea1-->a2endsubgraph twob1-->b2endsubgraph threec1-->c2end

效果:

graph TBc1-->a2subgraph onea1-->a2endsubgraph twob1-->b2endsubgraph threec1-->c2end

自定义样式

我们还可以定义边框的样式、颜色。

语法:

style id 具体样式

示例:

graph LRid1(Start)-->id2(Stop)style id1 fill:#f9f,stroke:#333,stroke-width:4px,fill-opacity:0.5style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 10,5

效果:

graph LRid1(Start)-->id2(Stop)style id1 fill:#f9f,stroke:#333,stroke-width:4px,fill-opacity:0.5style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 10,5

实际案例

说了这么多,来做个有实际价值的案例:绘制一个流程图,找出 A、 B、 C 三个数中最大的一个数。

graph LRstart[开始] --> input[输入A,B,C]input --> conditionA{A是否大于B}conditionA -- YES --> conditionC{A是否大于C}conditionA -- NO --> conditionB{B是否大于C}conditionC -- YES --> printA[输出A]conditionC -- NO --> printC[输出C]conditionB -- YES --> printB[输出B]conditionB -- NO --> printC[输出C]printA --> stop[结束]printC --> stopprintB --> stop

效果:

graph LRstart[开始] --> input[输入A,B,C]input --> conditionA{A是否大于B}conditionA -- YES --> conditionC{A是否大于C}conditionA -- NO --> conditionB{B是否大于C}conditionC -- YES --> printA[输出A]conditionC -- NO --> printC[输出C]conditionB -- YES --> printB[输出B]conditionB -- NO --> printC[输出C]printA --> stop[结束]printC --> stopprintB --> stop

参考

如何在 Markdown 中画流程图 - 简书

Markdown 进阶技能:用代码画流程图(编程零基础也适用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777610.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2023-1313 复现

CVE-2023-1313 复现cockpit在2.4.1版本之前存在任意文件上传漏洞PS:通过在浏览器中打开/install来运行安装首先看到了一个登录页面.我们按照提示访问/install,成功的添加了用户名和密码都为admin,登录. 来到如下界面,可以进行任意文件上传然后点击三个点可以选择下载文件,将得…

使用 addRouteMiddleware 动态添加中间

title: 使用 addRouteMiddleware 动态添加中间 date: 2024/8/4 updated: 2024/8/4 author: cmdragon excerpt: 摘要:文章介绍了Nuxt3中addRouteMiddleware的使用方法,该功能允许开发者动态添加路由中间件,以实现诸如权限检查、动态重定向及路由变化时的特定操作。内容涵盖…

DirectX9(D3D9)游戏开发:高光时刻录制和共享纹理的踩坑

共享纹理 老游戏使用directx9无法直接与cc高光sdk(d3d11)对接,但是d3d9ex有共享纹理,我们通过共享纹理把游戏画面共享给cc录制,记录一些踩坑的笔记。 共享纹理示例: // 初始化Direct3D void initD3D9(HWND hWnd) {hr = d3d9exdev->GetRenderTarget(0, &g_d3d9Render…

三数之和(双指针法)

题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 双指针法:首先我们要对数…

Nessus Professional 10.8.0 Auto Installer for macOS Sonoma

Nessus Professional 10.8.0 Auto Installer for macOS SonomaNessus Professional 10.8.0 Auto Installer for macOS Sonoma 发布 Nessus 试用版自动化安装程序,支持 macOS Sonoma、RHEL 9 和 Ubuntu 24.04 请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-…

Nexpose v6.6.263 for Linux Windows - 漏洞扫描

Nexpose v6.6.263 for Linux & Windows - 漏洞扫描Nexpose v6.6.263 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Jul 31, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。您的本地漏…

最佳包裹

求三维凸包用增量法求解 假设我们已经维护好了前面的点的凸包,对于新加入的点: 如果这个点在凸包内部显然那就不用管了 如果这个点在凸包外部,那么考虑如下情况:将新点\(P_r\)当做光源,照的到的面全部删掉,照不到的面保留下来即可 如何判断一个面是否能够被照到:取多面体…

数值分析方法

数值分析复习笔记数值分析方法 数值方法可以用近似方法来理解 对于一些得不到解析解否则解析解计算难度太大的问题,如何用较少的计算得到相对较好(满足精度要求)的数值解、近似解。数值分析最基本的立足点是容许误差 例子:近似计算基本方法:离散化(e.g. 数值积分) 递推法(将…

rocksdb安装与使用

首先要安装gcc 7.3以上版本,依赖于c++ 17.参见gcc 7安装及4.8.5和7.5并存。 需要rpm方式或源码安装gflags 2.2,否则系统可能内置了gflags 2.1,从而导致链接时一直找不到gflags库。如下:/tmp/ccUXmr9R.o: In function `__static_initialization_and_destruction_0(int, int)…

WPF【无限滚动图片浏览】自定义控件

自定义控件自定义控件是我比较陌生的一个主题。我好久没练习过wpf了,需要巩固记忆。我想了一会儿,打开动漫之家,忽然觉得这个看漫画的图片浏览控件有意思。于是特地花了一天做了这个图片控件。我原本以为很容易,但实际上并不简单。这个图片浏览控件比我想象中要难许多,有技…

矩阵乘法内核优化CUDA杂谈

矩阵乘法内核优化CUDA杂谈矩阵乘法内核优化CUDA杂谈How to Optimize a CUDA Matmul Kernel for cuBLAS-like Performance: a Workloghttps://siboehm.com/articles/22/CUDA-MMM在这篇文章中,我将迭代优化用CUDA编写的矩阵乘法的实现。我的目标不是构建cuBLAS的替代品,而是深入…

Cocos Creator 3.8.x bundle核心知识点

bundle官网知识文档: https://docs.cocos.com/creator/3.8/manual/zh/asset/bundle.html bundle核心知识点如下: