首页 > 其他分享 >用Mermaid画图

用Mermaid画图

时间:2025-01-17 20:43:00浏览次数:1  
标签:Launch -- graph 画图 LR Hidden TB Mermaid

1、用Mermaid画图
mermaid.md
TyporaPortable.rar
mermaid.zip

目录

1 Mermaid是什么

1.1 概述

Mermaid 是一个用于画流程图、状态图、时序图、甘特图的库,使用 JS 进行本地渲染,广泛集成于许多 Markdown 编辑器中。
Mermaid 作为一个使用 JS 渲染的库,生成的不是一个“图片”,而是一段 HTML 代码。

1.2 网址

官网地址:

https://mermaid-js.github.io/mermaid/#/

Github地址:

https://github.com/knsv/mermaid

图形

图形

几种图形

graph TB 默认方形 id1[方形] id2(圆边矩形) id3([体育场形]) id4[[子程序形]] id5[(圆柱形)] id6((圆形)) graph TD id1{菱形} id2{{六角形}} id3[/平行四边形/] id4[\反向平行四边形\] id5[/梯形\] id6[\反向梯形/]

image

名字节点与无名字节点

graph TB A[有名 字节点] 无名字节点 A-->无名字节点

设置样式:style, classDef, class, :::

graph TB id4:::defaultStyle 默认方形:::defaultStyle id1[方形] id2(圆边矩形) id3([体育场形]) id4[[子程序形]] id5[(圆柱形)] id6((圆形)) style id1 fill:#f9f,stroke:#333,stroke-width:1px classDef defaultStyle fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5 id2:::defaultStyle class id3,id4,id5 defaultStyle;

image
fill:设置结点的填充颜色
stroke:设置边缘绘制颜色
stroke-width:设置边缘绘制的粗细
stroke-dasharray:设置如何绘制虚线边框,第一个参数描述的是虚线中线段的长度,第二个参数描述的是每个线段之间的间隔
classDef: 自定义样式

线条

图形连线(--)及注释(%%)

graph LR a---b %% 这是一条注释 c-->d

image

线条样式

graph LR a---b c-->d linkStyle 0 stroke:#0ff,stroke-width:2px; linkStyle default stroke:#ff3,stroke-width:4px,color:red;

image

实线与虚线

graph LR a---b c-.-d

image

箭头

graph TB a---b c--无箭头线---d graph TB a-->b c--带箭头线-->d

image

实线与粗实线及箭头

graph TB a-->b c--实线箭头-->d e-->|实线箭头|f graph TB a==>b c==粗实线箭头==>d e==>|实线箭头|f graph TB a-.->b c-.虚线箭头.->d e-.->|虚线箭头|f

image

延长线

graph LR a-->b c--->d

image

其他线条:flowchart

flowchart LR a <--> b c x--x d e o--o f g o--圆头--o h

image

其他线条

类图、时序图等线条与图形,详见相关Demo

连接形式

直连

graph LR a --> b-->c graph LR d-->e e-->f c-->d c-->g

image

多重连接: &

graph LR a & b-->c & d e-->f & g --> h

image

方向

由上到下:TB/TD

graph TB 图形1--由上到下-->A(图形2) graph TD 图形1-->A(图形2)

image

由下到上:BT

graph BT 图形1--由上到下-->A(图形2)

image

由左到右:LR

graph LR 图形1--由左到右-->A(图形2)

由右到左:RL

graph RL 图形1--由左到右-->A(图形2)

image

子图:flowchart/subgraph/end

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

image
image

  • 注:
  • 子图中,有个定义方向的语法:direction,例如direction LR; 目前没有找到支持该语法的编辑器。

练习:画思维导图

graph LR MD学习-->MR[Mermaid学习]-->GP[图形] MR-->D[方向] & L[线条] & U[UML] GP-->名字节点与无名字节点 L-->虚线与实线 & 箭头 & 粗细 & 文本 & 直连与多重连接 U-->数据流图 & 类图 & 时序图 & 状态图 & 流程图 & 子图

练习:类图

classDiagram class Application { Run DispatchNextEvent virtual GetNextEvent virtual Initialize virtual Teardown virtual AcceptFrame } class QueueApplication { GetNextEvent virtual WaitForSystemEventWithTimeout virtual PollNextSystemEvent Inject InjectTimedEvent } class AppManagerHisense { GetDirectFB GetWindow Initialize Teardown } class Queue { Get Poll Put } class EventQueue { Put Get } class TimedEventQueue { Get } class IDirectFB { <<interface>> } class SbWindow { <<interface>> } class DFBInputEvent { <<interface>> } Application <|-- QueueApplication QueueApplication<|--AppManagerHisense Queue<|--EventQueue QueueApplication*--EventQueue QueueApplication*--TimedEventQueue AppManagerHisense*--IDirectFB AppManagerHisense*--SbWindow SbWindow*--DFBInputEvent

线条

classDiagram %% 组合 a "1" *-- "1..n" b : map %% 聚合 e o-- f: 聚合 %% 继承 c<|--d: 继承 %% 实线 g <|.. h %% 依赖 i ..> j: 依赖 %% Link k .. l m -- n %% 关联 p --> q:关联

image

图形

classDiagram class DFBInputEvent~T,V~ { <<interface>> -mutex +Get() #Poll() +Put() }

练习:时序图

sequenceDiagram 前端 ->> xwjAiotCommunity:设置关注人员(owner/care/batchSet) xwjAiotCommunity->>DB(basic_owner): 获取业主卡号 xwjAiotCommunity->>DB(basic_owner_validtime): 获取FaceId xwjAiotCommunity ->> xwjAiotTrajectory: 向AI下发人脸(care/registFace2AI) xwjAiotTrajectory ->> AI: 下发人脸(xwj-videoai-specialperson/reportMsg) xwjAiotCommunity ->> DB(basic_owner_business_tag): 添加关注人员标签

image

线条

线条: ->>, -->>,-x, --x activate, deactivate

sequenceDiagram a ->> b:调用 activate b b -->> a:返回 a-xc: 删除消息 a--xb: 删除消息 deactivate b

image

参与者声明与线条: participant, +/-

sequenceDiagram participant a as A participant b AS B participant c AS C a ->>+b: 调用 c ->>+b:call b ->>-a:返回 a-xc:删除消息 a-xb: 删除消息 b->>-c:调用

image

笔记: note

sequenceDiagram participant a as Alice participant j as John participant d as Dan Note right of j: John is a studenst Note left of a: Alice is a girl Note over j,d: this is a test a->>+j:Hello John, how are you? d->>+j:John, can you hear me? j-->>-a:Hi Alice, I can hear you! j-->>-d:I feel great!

image

loop:循环

sequenceDiagram title: loop 循环 a->>b:how are you loop wait answer a->>b:how are you 2 end b-->>a: how are you

image

alt: 条件判断

sequenceDiagram alt if true a->>b:how are you else b->>a: how are you end

image

opt: 可选

sequenceDiagram opt ask a->>b:how are you end

image

par: 并行与autonumber

sequenceDiagram autonumber title: par 演示 par A a->>b:how are you and B a->>b:how are you2 and C a->>b:how are you3 end

image

背景颜色与title

sequenceDiagram title: 设置颜色 rect rgba(60, 125, 255, .5) par A a->>b:how are you and B a->>b:how are you2 and C a->>b:how are you3 end end

image

练习:状态图

  • 参考状态图
    state

demo 1

stateDiagram-v2 NR:Not Runing R:Running HD:Hidden V:Visible F:Focus NF:Not Focus S:Suspend B:Background(resume to plackback) state R { direction LR state HD { direction LR S B } state V { direction TB F NF } } NR --> F: Launch NR --> HD: Launch into hidden HD --> F: Make Visible V --> HD: Hidden F --> NF: Lost Focus NF --> F: Got Focus %%R --> NR: AppExit/exit code/App crash

picture

疑问

1、不清楚如何表达:

  1. 状态图中的属性
  2. 进入,离开时的响应
    2、方向(direction)似乎不太灵
    3、有些状态跳转不能添加,例如 R-->NR
    4、Typora不能很好的支持stateDiagram-v2,只支持stateDiagram
    5、Typora不支持direction

demo 2

stateDiagram-v2 NR:Not Runing R:Running HD:Hidden V:Visible F:Focus NF:Not Focus S:Suspend B:Background(resume to plackback) state R { direction TB state HD { direction TB S B [*] --> S:Launch into hidden/Visible to Hidden [*] --> B:Launch into hidden/Visible to Hidden S --> B:todo B --> S:todo S-->[*]:MakeVisible/To Not Running B-->[*]:MakeVisible/To Not Running } state V { direction TB F NF [*]-->F: Make Visible/Launch F-->NF: Lost Focus NF-->F:Got Focus F-->[*]:Hidden NF-->[*]:Hidden } [*] -->HD : Launch into hidden [*] -->V: Launch HD-->V: Make Visible V --> HD: Hidden V-->[*]: exitCode/AppCrash/AppExit } [*]-->NR:start NR --> R:Launch/Launch into hidden R-->NR:exitCode/AppCrash/AppExit

picture

demo 3: Typora

  • demo1, demo2在有道云笔记中,可以正常显示,但在Typora中无法正常显示
stateDiagram-v2 NR:Not Runing R:Running [*]-->NR:device launch NR --> R:Launch/Launch into hidden R-->NR:exitCode/AppCrash/AppExit

state Runing

stateDiagram-v2 HD:Hidden V:Visible [*] -->HD : Launch into hidden [*] -->V: Launch HD-->V: Make Visible V --> HD: Hidden V-->[*]: exitCode/AppCrash/AppExit

state Hidden

stateDiagram-v2 S:Suspend B:Background(resume to plackback) [*] --> S:Launch into hidden/Visible to Hidden [*] --> B:Launch into hidden/Visible to Hidden S --> B:todo B --> S:todo S-->[*]:MakeVisible/To Not Running B-->[*]:MakeVisible/To Not Running

state Visible

stateDiagram-v2 F:Focus NF:Not Focus [*]-->F: Make Visible/Launch F-->NF: Lost Focus NF-->F:Got Focus F-->[*]:Hidden/To Not Running NF-->[*]:Hidden/To Not Running

练习:饼状图

pie title 为什么总是宅在家里? "喜欢宅" : 15 "天气太热或太冷" : 20 "穷" : 500

image

练习: 数据流图

graph LR R[RAE] D(DIAL) R--start/stop command-->D R--Test Case Command-->N D--apm Message:start/stop-->N N--device info:esn,mac,ip,model-->R classDef outerStype fill:#d3d3d3,stroke:#333,stroke-width:1px R:::outerStype

标签:Launch,--,graph,画图,LR,Hidden,TB,Mermaid
From: https://www.cnblogs.com/Rong-/p/18677639

相关文章

  • AI 与 Mermaid 使用教程之流程图 - 从入门到精通
    本文由 Mermaid中文文档 整理而来,并且它同时提供了一个Mermaid在线编辑器,支持在线编辑与生成流程图。在文章的末尾我们将介绍如何使用AI来自动生成Mermaid流程图。Mermaid流程图-基本语法流程图由节点(几何形状)和边(箭头或线)组成。Mermaid代码定义了如何创建节点和边,并......
  • 高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
    目录高效工作流:用Mermaid绘制你的专属流程图一、流程图的使用场景1.1、流程图flowChart1.2、使用场景二、如何使用mermaid画出优雅的流程图2.1、流程图添加图名2.2、定义图类型与方向2.3、节点形状定义2.3.1、规定语法2.3.2、不同节点案例2.4、节点连线2.5、子图与......
  • AI画图变现教程,如何利用stable diffusion变现
    0****1如何找到好的ai画图工具(免费)画图软件:目前市面上的画图工具比较多,但是绝大多数都要收费或者有限制,可以使用stablediffusion整合包ai关键词:很多小伙伴都知道画图软件,但是如何可以画出好看的图呢,简单输入几个字就可以吗?并不是,每个用户注册后使用的ai模型都是需要训练......
  • plantuml---可编程实现的画图工具(让图看上去很专业)
     经常看到有的ppt中有非常专业的图,非常整齐、简洁、清晰,于是经过一番查找和交流得知,有一款开源工具plantuml,能够实现此类效果。特记录之。个人感觉这个软件的2大优势是:可代码编程,可版本管理(因为是代码实现的)1、plantuml的官网:https://plantuml.com2、通过在VSCode......
  • 动画图解嵌入式常见的通讯协议:SPI、I²C、UART、红外
    文章下方附学习资源,自助领取。1SPI传输 ▲图1SPI数据传输 ▲图1.2SPI数据传输(2)  ▲图1.3SPI时序信号2I²C传输  ▲图1.2.1I2C总线以及寻址方式3年嵌入式物联网学习资源整理分享:C语言、Linux开发、数据结构;软件开发,STM32单片机、ARM硬......
  • 推荐:一个超棒的画图神器,完美绘图,可在线使用!
    前言大家好,我是小徐啊。在我们Java开发的时候,一款好用的画图软件是必不可少的。然而,目前的一些画图软件,要么使用起来不够简单,要么是要收费的,要么功能不够强大。总存在这样那样的不足。今天,小徐要介绍一款画图神器,支持我们想要的各种画图,并且使用简单,完全免费。文末附获取方式。......
  • 在华为开发者空间,基于FunctionGraph快速部署在线画图工具
    本文分享自华为云社区《【开发者空间实践指导】使用函数工作流部署画图工具Excalidraw》,作者:开发者空间小蜜蜂。1.1案例介绍函数工作流FunctionGraph是一项基于事件驱动的函数托管计算服务,只需要编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免......
  • [BootstrapBlazor] Blazor 使用 Mermaid 渲染详细图表
    BootstrapBlazor是一套基于Bootstrap和Blazor的企业级组件库,无缝整合了Bootstrap框架与Blazor技术。它提供了一整套强大的工具,使开发者能够轻松创建响应式和交互式的Web应用程序。项目地址Gitee:https://gitee.com/LongbowEnterprise/BootstrapBlazorGitHub:https://g......
  • 画图新手的福音!10款免费绘图软件轻松搞定设计
    在当前的数字化时代,各类创作工具层出不穷,特别是画图软件备受设计师和创意工作者的青睐。但在众多的免费画图软件中,如何找到最适合自己的工具呢?为了帮助您解答这个问题,我们特别挑选了10款广受欢迎的免费画图软件进行分析评测,每一款都独具特色,可满足不同用户的需求。1.免费画图......
  • markdown中画图功能mermaid
    mermaidMermaid是一种开源的可交互式的数据可视化库,它使用Markdown标记语言来生成图表和流程图。它通常用于生成网站或文档中的图表。Mermaid不属于任何公司,而是一个由社区开发和维护的开源项目。官方网站:https://mermaid-js.github.io/启用markdown绘图块与代码......