zoukankan      html  css  js  c++  java
  • Markdown画图(mermaid)学习

    简介

    目前博客园支持mermaid的graph,subgraph,sequenceDiagram,gantt,classDiagram
    mermaid(美人鱼), 是一个类似markdown,用文本语法来描述文档图形的工具。mermaid语法包含在博客园markdown中。
    注释为:

    %% 注释
    

    插入为:(以下的例如只列举代码)

    ```mermaid
    代码
    ```

    <body>
      <div class="mermaid">
       代码
      </div>
    </body>
    

    graph(流程图)

    关键字graph表示一个流程图的开始,同时需要指定该图的方向。如果内容包含特殊字符,可使用"字符",或参考这个的markdown转义。

    方向

    代码 方向
    TB 从上到下
    TD 从上到下
    BT 从下到上
    RL 从右到左
    LR 从左到右

    T = TOP,B = BOTTOM,L = LEFT,R = RIGHT,D = DOWN
    例如:

    graph LR;
      A-->B;
      B-->C;
      C-->D;
      D-->A;
    
    graph LR; A-->B; B-->C; C-->D; D-->A;

    形状

    代码 形状
    变量 默认形状
    变量[内容] 矩形
    变量(内容) 圆矩形
    变量((内容)) 圆形
    变量>内容] 非对称形
    变量{内容} 菱形

    例如:

    graph LR
      A
      B[b]
      C(c)
      D((d))
      E>e]
      F{f}
    
    graph TB A B[b] C(c) D((d)) E>e] F{f}

    连线

    话不多说,上表。注意:中间的符号或多或少都不行

    代码 形状
    A-->B 箭头
    A---B 直连
    A--text---B 注释
    A--text-->B 箭头注释
    A-.-B 虚线直连
    A-.->B 虚线箭头
    A-.text.-B 虚线注释直连
    A-.text.->B 箭头虚线注释
    A===B 加粗直连
    A==>B 加粗箭头
    A==text===B 加粗注释直连
    A==text==>B 加粗注释箭头
    graph TB
      A1-->B1
      A2---B2
      A3--text---B3
      A4--text-->B4
      A6-.-B5
      A6-.->B6
      A7-.text.-B7
      A8-.text.->B8
      A9===B9
      A10==>B10
      A11==text===B11
      A12==text==>B12
    
    graph TB A1-->B1 A2---B2 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

    样式

    将特定样式例如较粗的边框或不同的背景颜色

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

    大例如

    graph LR
      A[x]
      B["if(x<0)"]
      C["x=-x"]
      D[return x]
      A-->B-->C-->D
      C-->D
    
    graph LR A[x] B["if(x<0)"] C["x=-x"] D[return x] A-->B B-->C B-->D C-->D

    subgraph(子图)

    格式

    注意:外层可以使用里层中的节点,可以认为是全局变量

    graph LR
      subgraph 名称
        代码
      end
      subgraph 名称
        代码
      end
    

    大例如:

    graph LR subgraph g1 a1-->b1 end subgraph g2 a2-->b2 end subgraph g3 a3-->b3 end b1-->a2 b2-->a3

    sequenceDiagram(序列图)

    功能

    • participant
      参与者,相当先定义模块,可通过设定参与者(participant)的顺序控制展示顺序。
      例如:
    partcipant A
    partcipant B
    
    sequenceDiagram participant A participant B
    partcipant B
    partcipant A
    
    sequenceDiagram participant B participant A

    也可以使用别名:

    sequenceDiagram
      participant A as A dog
      participant B as Bob
      A->B:Hello
    
    sequenceDiagram participant A as A dog participant B as Bob A->B:Hello
    • note
      注释,格式如下
    note right of或left of 变量:Text
    note over 变量左,变量右 :Text
    
    • 循环
    loop 题目
    代码
    end
    
    • 选择
    alt 题目
    代码
    else
    代码
    end
    

    在没有else的情况下使用 opt(option,选择)

    opt 题目
    代码
    end
    

    例如:

    sequenceDiagram
      A->>B: Hello B, how are you?
      alt is sick
        B->>A:not so good :(
      else is well
        B->>A:good
      end
      opt another
        B->>A:Thanks for asking
      end
    
    sequenceDiagram   A->>B: Hello B, how are you?   alt is sick     B->>A:not so good :(   else is well     B->>A:good   end   opt another     B->>A:Thanks for asking   end
    • 激活停用
      可以激活activate或停用deactivate
    sequenceDiagram
        Alice->>John: Hello John, how are you?
        activate John
        John-->>Alice: Great!
        deactivate John
    
    sequenceDiagram Alice->>John: Hello John, how are you? activate John John-->>Alice: Great! deactivate John

    也可通过在消息箭头后面添加+-后缀,这一种快捷方式标记:

    sequenceDiagram
        Alice->>+John: Hello John, how are you?
        John-->>-Alice: Great!
    
    sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!
    • 平行
      可以显示并行发生的动作。
    par [题目]
    代码
    and [题目]
    代码
    and [题目]
    代码
    end
    
    sequenceDiagram
      participant A
      participant B
      par A to B
        A->B:Hello
      and A to C
        A->C:Hello
      end
    
    sequenceDiagram participant A participant B par A to B A->B:Hello and A to C A->C:Hello end

    连线

    代码 形状
    -> 无箭头实线
    ->> 有箭头实线
    --> 无箭头虚线
    -->> 有箭头虚线
    -x 带x实线
    --x 带x虚线

    在必须后面加:,以加以注释。
    例如:

    sequenceDiagram
      A -> B : none
      A ->> B : none
      A --> B : none
      A --> B : none
      A -x B : none
      A --x B : none
    
    sequenceDiagram A -> B : none A ->> B : none A --> B : none A --> B : none A -x B : none A --x B : none

    gantt(甘特图)

    甘特图是一类条形图,由Karol Adamiechi在1896年提出, 而在1910年Henry Gantt也独立的提出了此种图形表示。通常用在对项目终端元素和总结元素的开始及完成时间进行的描述

    功能

    代码 解释
    title 标题
    dateFormat 日期写入格式
    axisFormat 日期输出格式
    section 模块
    done 已经完成
    Active 当前正在进行
    Future 后续待处理
    crit 关键阶段
    日期缺失 默认从上一项完成后

    格式基本为:内容:关键是否,状态,变量,日期

    日期写入格式

    默认为:dateFormat YYYY-MM-DD

    代码 例如 解释
    YYYY 2020 4位年数
    YY 20 2位年数
    Q 4 季度
    M或MM 1或12
    D或DD 1或31
    Do 1st或31st 序数的日
    DDD或DDDD 1或365 年的日
    X 1410715640.579
    x 1410715640579 毫秒
    H或HH 0或23
    h或hh 1或12 12时记时法
    a或A am或pm 12时的附加
    m或mm 0或59
    s或ss 0或59
    S 0或9 十分之一秒
    SS 0或99 百分之一秒
    SSS 0或999 千分之一秒
    Z或ZZ +12:00 从UTC偏移的时间

    日期输出格式

    默认为:axisFormat %Y-%m-%d

    代码 解释
    %a 星期几的缩写
    %A 完整的工作日名称
    %b 月份的缩写
    %B 完整的月份名称
    %c 日期和时间如"%a%b%e%H:%M:%S%Y"
    %d 以十进制数[01,31]补零的月份
    %e 以十进制数字表示的月份中带空格的日期[1,31]
    %H 小时(24小时制)十进制数字[00,23]
    %I 小时(12小时制)十进制数字[01,12]
    %j 年中的天十进制数字[001,366]
    %m 以十进制数字[01,12]表示的月份
    %M 分钟十进制数字[00,59]
    %L 十进制数字[000,999]表示的毫秒
    %p AM或PM
    %S 秒十进制数字[00,61]
    %U 一年中的第几周(星期日为一周的第一天)以十进制数[00,53]为准
    %w 工作日以十进制数字[0,6]
    %W 一年中的第几周(星期一为一周中的第一天)以十进制数[00,53]为准
    %x 日期以“%m /%d /%Y”表示
    %X 时间以“%H:%M:%S”表示
    %y 不带世纪的十进制数字[00,99]
    %Y 以世纪作为十进制数字的年份
    %Z 时区偏移量
    %% 文字“%”字符

    大例如

    gantt
      title AB
      section A
      A1 : done, 2020-01-01,2020-01-02
      A2 : active, 2020-01-02,1d
      section B
      B1 : future, 2020-01-03
      B2 : crit,active,b2,2020-01-03,48h
      section C
      C1 : done,after b2,1d
    
    gantt title AB section A A1 : done, 2020-01-01,2020-01-02 A2 : active, 2020-01-02,1d section B B1 : future, 2020-01-03 B2 : crit,active,b2,2020-01-03,48h section C C1 : done,after b2,1d

    classDiagram(类图)

    类图是面向对象建模的主要构建块。它用于应用程序结构的一般概念建模,以及用于将模型转换为编程代码的详细建模。类图也可以用于数据建模。类图中的类表示主要元素,应用程序中的交互以及要编程的类。
    就是大了点,以我现在的能力是无法改变的。

    功能


    • UML提供了表示类成员的机制,例如属性和方法,以及有关它们的其他信息。图中一个类的单个实例包含三个隔离专区:

    顶部的小节包含类的名称。它以粗体和居中打印,并且第一个字母大写。它还可能包含描述类性质的可选注释文本。
    中间隔离专区包含类的属性。它们左对齐,第一个字母为小写。
    底部的隔离区包含类可以执行的操作。它们也左对齐,首字母为小写。

    • 定义类
      定义类有两种方法:
    1. 使用关键字类(如)明确定义一个类class A.
    2. 通过它们之间的关系定义两个类A <|-- B
      命名约定:类名应由字母数和下划线字符组成。
        classDiagram
        class A
        A <|-- B
    
    classDiagram class A A <|-- B
    • 定义成员
      根据括号()是否存在来区分属性和函数/方法。与()一起的被视为函数/方法,而其他被视为属性。
      使用:(冒号)后跟成员名称来关联类的成员
        classDiagram
        Animal <|-- Duck
        Animal <|-- Fish
        Animal <|-- Zebra
        Animal : +int age
        Animal : +String gender
        Animal : +isMammal()
        Animal : +mate()
        Duck : +String beakColor
        Duck : +swim()
        Duck : +quack()
        Fish : -int sizeInFeet
        Fish : -canEat()
        Zebra : +bool is_wild
        Zebra : +run()
    
    classDiagram Animal <|-- Duck Animal <|-- Fish Animal <|-- Zebra Animal : +int age Animal : +String gender Animal : +isMammal() Animal : +mate() Duck : +String beakColor Duck : +swim() Duck : +quack() Fish : -int sizeInFeet Fish : -canEat() Zebra : +bool is_wild Zebra : +run()
    • 能见度
      为了指定类成员的可见性(即任何属性或方法),可以将这些符号放在成员名称的前面,但它是可选的:
      1.+Public
      2.-Private
       classDiagram
         AA <|-- BB
         AA : +a()
         BB : -b()
    
    classDiagram AA <|-- BB AA : +a() BB : -b()

    连线

    大概定义为:

    类型1 关系 类型2 : 注释

    代码 代码 解释
    <|-- --|> 实线三角
    *-- --* 实线菱头
    o-- --o 实线空菱
    <-- --> 实线箭头
    -- -- 实线直连
    <.. ..> 实线箭头
    <|.. ..|> 实线三角
    .. .. 实线直连

    例如:

         classDiagram
           A1 <|-- B1
           B1 --|> C1
           A2 *-- B2
           B2 --* C2
           A3 o-- B3
           B3--o C3
           A4 <-- B4
           B4--> C4
           A5 -- B5
           B5-- C5
           A6 <.. B6
           B6..> C6
           A7 <|.. B7
           B7 ..|> C7
           A8 .. B8
           B8 .. C8
    
    classDiagram A1 <|-- B1 B1 --|> C1 A2 *-- B2 B2 --* C2 A3 o-- B3 B3--o C3 A4 <-- B4 B4--> C4 A5 -- B5 B5-- C5 A6 <.. B6 B6..> C6 A7 <|.. B7 B7 ..|> C7 A8 .. B8 B8 .. C8
  • 相关阅读:
    Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx  Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api
    Atitit s2018.5 s5 doc list on com pc.docx  v2
    Atitit s2018.5 s5 doc list on com pc.docx  Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 18821766710 attilax main num.docx Atiitt put post 工具 开发工具dev tool test.docx Atiitt 腾讯图像分类相册管家.docx
    Atitit s2018 s4 doc list dvchomepc dvccompc.docx .docx s2018 s4 doc compc dtS44 s2018 s4 doc dvcCompc dtS420 s2018 s4f doc homepc s2018 s4 doc compc dtS44(5 封私信 _ 44 条消息)WebSocket 有没有可能取代 AJAX
    Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc dtS312 s2018 s3f doc compcAtitit PathUtil 工具新特性新版本 v8 s312.docx s2018 s3f doc compcAtitit 操作日
    Atitit s2018.2 s2 doc list on home ntpc.docx  Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx Atiitt 手写文字识别 讯飞科大 语音云.docx Atitit 代码托管与虚拟主机.docx Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx Atitit 几大研发体系对比 Stage-Gat
    Atitit 文员招募规范 attilax总结
    Atitit r2017 r6 doc list on home ntpc.docx
    atitit r9 doc on home ntpc .docx
    Atitit.如何文章写好 论文 文章 如何写好论文 技术博客 v4
  • 原文地址:https://www.cnblogs.com/Srand-X/p/13347646.html
Copyright © 2011-2022 走看看