Graphviz 快速入门

Graphviz 快速入门教学

Graphviz 是一个强大的图形可视化工具,可以让你通过简单的文本描述来生成复杂的图表。以下是快速入门指南:

1. 安装 Graphviz

首先需要安装 Graphviz:

  • Windows:从官网下载安装包 graphviz.org/download
  • Macbrew install graphviz
  • Linuxsudo apt-get install graphviz (Ubuntu/Debian)

2. 基础语法

Graphviz 使用 DOT 语言来描述图形。基本结构如下:

// 有向图
digraph 图名 {
    // 节点和边的定义
    A -> B -> C;
    B -> D;
}

// 无向图
graph 图名 {
    // 节点和边的定义
    A -- B -- C;
    B -- D;
}

3. 节点和边的基本属性

节点属性

digraph {
    // 形状、颜色、标签
    A [shape=box, color=blue, label="开始节点"];
    
    // 常用形状:box, circle, ellipse, diamond, record等
    B [shape=circle, fillcolor=yellow, style=filled];
    
    // 图像节点
    C [shape=plaintext, image="icon.png"];
}

边属性

digraph {
    A -> B [
        label="关系",       // 边标签
        color=red,        // 颜色
        style=dashed,     // 样式:solid, dashed, dotted等
        arrowhead=vee,    // 箭头类型:none, normal, vee等
        penwidth=2.0      // 线宽
    ];
}

给边增加颜色
digraph G {
    2->1->3->4 [color=blue];
    3->1->4->2 [color=red];
}

image

4. 常用图形示例

流程图

digraph flowchart {
    node [shape=box, style=rounded]
    
    start [shape=ellipse, label="开始"]
    input [label="输入数据"]
    process [label="处理数据"]
    decision [shape=diamond, label="判断条件"]
    output [label="输出结果"]
    end [shape=ellipse, label="结束"]
    
    start -> input -> process -> decision
    decision -> output [label="是"]
    decision -> process [label="否"]
    output -> end
}

组织结构图

digraph org {
    node [shape=box, style=filled, fillcolor=lightblue]
    
    CEO -> {CTO, CFO, COO}
    CTO -> {DevManager, QAManager}
    CFO -> {AccManager, FinManager}
    COO -> {OpsManager}
    
    DevManager -> {FrontendLead, BackendLead}
}

状态机

digraph state_machine {
    node [shape=circle]
    
    idle -> running [label="启动"]
    running -> paused [label="暂停"]
    paused -> running [label="恢复"]
    running -> idle [label="停止"]
    paused -> idle [label="停止"]
}

5. 布局引擎

Graphviz 提供多种布局引擎,通过命令行指定:

  • dot - 有向图的层次布局(默认)
  • neato - 弹簧模型布局
  • fdp - 类似neato,但力导向
  • circo - 环形布局
  • twopi - 径向布局

使用方式:

dot -Tpng input.dot -o output.png

6. 实用技巧

  1. 注释:使用 ///* */ 添加注释
  2. HTML标签:可以在标签中使用HTML格式
    A [label=<
    <table border="0">
      <tr><td>姓名</td><td>张三</td></tr>
      <tr><td>年龄</td><td>25</td></tr>
    </table>
    >]
    
  3. 子图:用 subgraph 组织相关节点
    digraph {
        subgraph cluster_A {
            label="模块A";
            A1; A2; A3;
        }
        subgraph cluster_B {
            label="模块B";
            B1; B2;
        }
        A1 -> B2
    }
    

7. 生成图片

保存代码到 .dot 文件后,使用命令行生成图片:

# 生成PNG
dot -Tpng graph.dot -o graph.png

# 生成SVG(推荐矢量图)
dot -Tsvg graph.dot -o graph.svg

# 指定布局引擎
neato -Tpng graph.dot -o graph.png

学习资源

  1. 官方文档:graphviz.org/documentation
  2. 图库示例:graphviz.org/gallery
  3. 交互式编辑器:
    edotor.net
    sketchviz.com

现在你已经掌握了 Graphviz 的基础知识,可以开始创建自己的图表了!从简单图形开始,逐步尝试更复杂的可视化需求。

posted @ 2025-06-04 16:09  katago  阅读(1293)  评论(0)    收藏  举报