JavaScript is required

使用Dagre布局算法(位置、线条)

Dagre 布局集成 - 有向无环图的分层布局

Dagre 布局集成

功能概述

本示例演示 Dagre(有向图)布局算法与关系图的集成。Dagre 专长于有向无环图(DAG)的分层布局,使其成为流程图、状态机和依赖关系图的理想选择。

核心特性实现

Dagre 集成

import dagre from 'dagre';

const applyDagreLayout = () => {
    const g = new dagre.graphlib.Graph();
    g.setGraph({ rankdir: 'TB', nodesep: 50, edgesep: 10, ranksep: 50 });

    // 向 dagre 图添加节点
    graphInstance.getNodes().forEach(node => {
        g.setNode(node.id, { width: node.width, height: node.height });
    });

    // 向 dagre 图添加边
    graphInstance.getLines().forEach(line => {
        g.setEdge(line.from, line.to);
    });

    // 计算布局
    dagre.layout(g);

    // 应用的计算位置
    g.nodes().forEach(nodeId => {
        const node = g.node(nodeId);
        graphInstance.updateNode(nodeId, {
            x: node.x,
            y: node.y
        });
    });
};

分层组织

const layoutOptions = {
    rankdir: 'TB',  // 从上到下
    nodesep: 70,    // 同级节点之间的间距
    ranksep: 100,   // 层级之间的间距
    edgesep: 10     // 平行边之间的间距
};

创意使用场景

流程图:专业的图表布局。

状态机:清晰的状态转换可视化。

构建系统:依赖关系图可视化。

流水线:数据流和处理阶段。

组织架构图:整洁的层级结构。