Skip to content

Graphviz 图表

VMark 可在 Markdown 文档中直接渲染 Graphviz DOT 图。图表由 Graphviz 的 WASM 构建版(@viz-js/viz)在本地渲染——无需网络访问,也不依赖外部可执行程序。

插入图表

通过菜单栏的 插入 → Graphviz 图表(或工具栏的插入分组)插入一个模板图表——该快捷键默认未绑定,可在设置中自定义。也可以直接输入带有 dotgraphviz 语言标识符的围栏代码块:

markdown
```dot
digraph G {
    rankdir = LR
    start -> parse -> render
    parse -> error [style = dashed]
}
```

两种围栏语言的行为完全相同:

围栏渲染为
```dotGraphviz 图表
```graphvizGraphviz 图表

编辑模式

  • 所见即所得模式——代码块直接渲染为图表。双击图表即可编辑 DOT 源码,编辑时会实时预览(带防抖);在编辑标题栏中保存或取消。
  • 源码模式——将光标置于 ```dot 围栏内,即可看到浮动图表预览(可拖动、调整大小、缩放),与 Mermaid 相同。

平移、缩放与导出

渲染后的图表支持与 Mermaid 图表相同的操作:

  • Cmd/Ctrl + 滚动 缩放,拖动平移,点击重置按钮恢复居中
  • 通过导出按钮 导出为 PNG(浅色或深色背景)

引擎与布局

图表默认使用 dot 引擎(层次化/分层布局)进行排布。要使用其他引擎,请在图中设置标准的 Graphviz layout 属性——这一设置会随文档一起保存,在其他 Graphviz 工具中同样有效:

markdown
```dot
graph G {
    layout = neato
    a -- b -- c -- a
}
```
引擎布局风格
dot层次化/分层(默认)
neato弹簧模型(力导向)
fdp力导向,适合较大的图
sfdp多尺度力导向,适合超大规模的图
circo环形
twopi放射状
osage聚类
patchwork矩形树图(方形化)

遇到未知的 layout 值时,会像其他 DOT 错误一样显示渲染错误状态。

Graphviz 支持的所有标准 DOT 特性均可使用:子图与聚类、层级(rank)、节点形状、边样式、类 HTML 标签,以及显式颜色。

主题适配

  • 图表背景是透明的,因此会跟随编辑器主题。
  • 默认的节点、边和文字颜色派生自当前主题的设计令牌,因此图表在每个主题(White、Paper、Mint、Sepia、Night、Solarized)中都有原生观感,并会在切换主题时自动更新。
  • DOT 源码中的显式颜色始终优先于主题默认值——如果图中自行设置了 bgcolorcolorfontcolor,就会严格按源码渲染。

错误处理

如果 DOT 源码存在语法错误,代码块会显示渲染错误状态而非图表。修正源码后,预览会自动重新渲染。

HTML 与 PDF 导出

导出的 HTML 和 PDF 文档会嵌入渲染后的 SVG,因此在 VMark 之外查看时,图表显示效果也完全一致。