当前位置:首页 > draw.io教程

draw.io 中的 Mermaid 已更新,支持 ELK 布局

drawio2年前 (2024-06-11)draw.io教程11

Mermaid 是一种基于文本的语法,可用于描述图表,并自动将其整齐地排列在图表画布上。您可以在 draw.io 中通过“排列”>“插入”>“Mermaid”(位于 draw.io 菜单栏)或“+”>“Mermaid”(位于工具栏)输入 Mermaid 图表描述。draw.io 已更新至 Mermaid 版本 10.9.1,以支持新的 ELK 自动布局。

draw.io 中的文本转图表工具

draw.io 内置了多种文本转图表工具:

 

使用 Mermaid 语法生成的示例甘特图

这些文本转图表功能中,有些会在绘图画布上生成图像形式的图表,有些则会使用 draw.io 形状自动布局图表,并允许您继续向图表中添加 draw.io 形状和连接线。

使用 Mermaid 语法生成图表时,您可以选择首选的输出格式,但某些图表类型(如上面的甘特图)只会生成图像。

在 draw.io 中插入美人鱼图

下面用 Mermaid 语法描述了一个咖啡机调试流程示例。

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)

将此美人鱼图添加到 draw.io。

  1. 如果您使用的是简易模式Sketch 编辑器主题,请从菜单中选择“排列”>“插入”>“美人鱼”,或者从工具栏中选择“+”>“美人鱼”

  2. 请使用 Mermaid 语法在大文本框中输入图表的文字描述。

  3. 从下拉列表中,选择是要插入 draw.io 形状的图表(图表),还是作为单个图像(图像),然后单击“插入”

图表(默认):使用 draw.io 形状插入 Mermaid 图表时,您可以连接其他形状和连接线,并设置图表样式。要更改 Mermaid 的原始语法,请先删除之前插入的形状,然后重复上述步骤重新输入图表的 Mermaid 描述。

图片:要将美人鱼图生成为绘图画布上的单个 SVG 图像,请在“插入”之前从下拉列表中选择“图像”。将鼠标悬停在 SVG 图像上,即可在工具提示中看到美人鱼语法。请注意,您无法编辑或设置此 SVG 图像版本中各个形状或连接线的样式。

要更改以图像形式添加的 Mermaid 图表,请双击绘图画布上的 SVG,然后编辑 Mermaid 语法以重新生成图像。

请参考Mermaid 文档了解完整的语法和样式选项

适用于大型流程图的全新 ELK 布局

Mermaid 9.4 版本中引入的全新 ELK 布局选项,可以生成大型复杂流程图的更紧凑版本。

在 Mermaid 图表文本描述的顶部添加以下渲染器指令:

%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%

例如,要使用 ELK 渲染器命令布局上面所示的 Mermaid 示例图,插入 Mermaid 对话框如下所示。

请在文本图表描述中告诉 Mermaid 图表生成工具使用 ELK 布局选项。

点击“插入”,即可生成美人鱼示意图,并使用 draw.io 形状绘制。

虽然这个例子很小很简单,但对于具有复杂决策和许多分支的大型流程,使用此 ELK 渲染器选项可能会显示得更好。

注意:由于这是 Mermaid 开发人员的一项实验性功能,目前仅支持流程图布局。

大型美人鱼流程图(含和不含麋鹿)

下面展示的是一个较为复杂的 draw.io 流程图模板,已使用 Mermaid 语法进行了文字描述,并以图片形式插入。左侧的精简版本使用了新的 ELK 渲染器指令,而右侧的版本则没有。

使用 ELK 渲染器指令后,此流程图的 Mermaid 代码如下所示。

%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%graph TD
  A[\Replenish Value Add stock/] --->C
  B(Order product with Value Add) --->C
  C{Frequent process?} --->|Yes|D 
  C --->|No|F
  D{New template?} --->|Yes|E 
  D --->|No|G
  E(Create work order template) --->G
  F(Create work order) --->H
  G(Copy template to work order) --->I
  H(Add materials to work order processes) --->J
  I(Adjust material quantities) --->J
  J(Monitor work orders) --->K
  K{Material quantities in stock?} --->|No|L 
  K --->|Yes|M
  L(Procure materials) --->M
  M(Change status to In Progress) --->N
  N{External Vendor to perform step?} --->|Yes|O 
  N --->|No|P
  O(Add vendor costs) --->Q
  P[\Perform work order step/] --->R
  Q([Ship materials to Vendor]) --->S --->X
  R{Additional processing required?} --->|Yes|N 
  R--->|No|T
  S[\Perform work order step/] --->U
  T(Receive final stock) --->V
  U(Receive product from vendor) --->W
  V(Ship product on order) --->Y
  W{Partial quantity received?} --->|Yes|X 
  W --->|No|Z
  X[Create work order backorder] ---> J
  Y(Change status to complete) --->AA
  Z(Pay vendor invoice) --->R
  AA([Finish])