使用Mermaid语法创建关系图
drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能,并实现了云端存储,以及在线共创,分享,协作的功能。
Mermaid是一种类似于Markdown的语法,你可以使用文本来描述和自动生成图表。使用Mermaid的markdown启发语法,你可以生成流程图、UML图、饼图、甘特图等。
许多开发人员更喜欢使用文本描述他们的数据结构和过程,从而避免了上下文切换的需要。在基于markdown的文本描述中记录它们之后,您可以将其插入drawon.cn中,生成图表并自动布局。
插入Mermaid图表
-
点击调整图形>插入>高级>Mermaid。或者,单击工具栏上的+图标,然后选择Advanced > Mermaid。
-
将文本粘贴到文本框中,然后单击“插入”。
你的图表将根据文本自动创建和格式化,并作为单个图形插入到绘图画布上。
在drawon.cn中编辑Mermaid(美人鱼)代码
要查看以这种方式插入的任何图表的Mermaid代码,请选择该图形,然后按Enter。您可以对这里的代码进行更改,然后单击Apply以更新绘图画布上的关系图。
Mermaid语法
图表是通过使用箭头连接线链接文本标签创建的。你可以选择不同的图形,向连接线添加标签,以及设置连接线和图形的样式。
可以阅读Mermaid的文档查看完整的语法和样式选项:mermaid.js.org/#/
图形风格: [rectangle], (rounded renctangle), ((circle)), {diamond}
连接风格: 箭头: A-->B 带点的: A-.-->B 不带箭头 A---B 带标签: A-->|label|B
图表类型: graph, pie, gantt, sequenceDiagram, stateDiagram, classDiagram, erDiagram, journey, C4Context
甘特图: 任务状态:down, active, crit, after section
饼图: tittle
甘特图: 动作: commit, branch, checkout, merge
UML: 生命线: participant activate, 容器: loop, alt, opt, class
信息: 注释:%%, note
查看下面的示例,了解如何使用Mermaid语法在文本中定义各种图表。在drawon.cn中打开这些美人鱼图示例。
流程图
注意:标签可以包括新的行,以获得更清晰的布局。
graph TD
A(Coffee machine <br>not working) --> B{Machine has power?}
B -->|No| H(Plug in and turn on)
B -->|Yes| C{Out of beans or water?} -->|Yes| G(Refill beans and water)
C -->|No| D{Filter warning?} -->|Yes| I(Replace or clean filter)
D -->|No| F(Send for repair)
甘特图
甘特图受到许多项目经理的喜爱,因为他们可以跟踪项目的任务、依赖关系和时间表。在drawon.cn中创建甘特图可能很繁琐。但是如果用文本描述,则容易的多。
gantt
title Example Gantt diagram
dateFormat YYYY-MM-DD
section Team 1
Research & requirements :done, a1, 2020-03-08, 2020-04-10
Review & documentation : after a1, 20d
section Team 2
Implementation :crit, active, 2020-03-25 , 20d
Testing :crit, 20d
UML类图
下面是如何从简单的类图模板中绘制。将使用Mermaid语法。
classDiagram
Person <|-- Student
Person <|-- Professor
Person : +String name
Person : +String phoneNumber
Person : +String emailAddress
Person: +purchaseParkingPass()
Address "1" <-- "0..1" Person:lives at
class Student{
+int studentNumber
+int averageMark
+isEligibleToEnrol()
+getSeminarsTaken()
}
class Professor{
+int salary
}
class Address{
+String street
+String city
+String state
+int postalCode
+String country
-validate()
+outputAsLabel()
}
UML时序图
UML序列图用于显示所采取的步骤和完成过程中涉及的参与者。这些图在软件开发中被大量使用。
sequenceDiagram
autonumber
Student->>Admin: Can I enrol this semester?
loop enrolmentCheck
Admin->>Admin: Check previous results
end
Note right of Admin: Exam results may <br> be delayed
Admin-->>Student: Enrolment success
Admin->>Professor: Assign student to tutor
Professor-->>Admin: Student is assigned
饼状图
而你可以构建一个饼状图手动绘制。使用Mermaid语法可以非常容易地获得饼片的准确分布。在Mermaid代码中,您可以使用百分比值,也可以使用每个组的实际值。在下面的示例中,您可以看到哪些天是提交到mxgraph2最忙的日子。
pie title Commits to mxgraph2 on GitHub
"Sunday" : 4
"Monday" : 5
"Tuesday" : 7
"Wednesday" : 3
您知道吗? Mermaid的语法类似于Graphviz DOT和PlantUML,两者都可以插入到drawon.cn中,从文本描述创建图表。