js流程图插件_D3绘制流程图?安排!

本文介绍了如何使用D3和dagre-d3插件在前端绘制流程图,通过数据准备和绘图步骤展示新冠疫情期间的流动人员检测流程图。详细讲解了dagre的基本概念如rank,并提供了配置项的示例,包括graph、node和edge的配置,以及如何添加交互功能如拖拽缩放和鼠标悬停提示。
摘要由CSDN通过智能技术生成

66e27e778ee4a5dd1b65ec61ec6d47c3.png

写在前面

之前有小伙伴问我如何使用 D3 在前端绘制流程图,今天在这里给安排上,与大家分享。

明确一点,只要你的数据计算能力足够强,使用原生D3绘制流程图绝对可以的,但是,为了让大家更容易上手,避免重复造轮子,给大家推荐一个专门绘制流程图的 D3 插件 dagre-d3。

首先认识下 dagre。dagre 是专注于有向图布局的 javascript 库,由于 dagre 仅仅专注于图形布局,需要使用其他方案根据 dagre 的布局信息来实际渲染图形,而 dagre-d3 就是 dagre 基于 D3 的渲染方案。

dagre 项目地址:https://github.com/dagrejs/dagre

dagre-d3 项目地址:https://github.com/dagrejs/dagre-d3

下面使用 D3 与 dagre-d3 绘制新冠疫情期间的流动人员检测流程图,老规矩先上效果图。

3d94958dd3391559e7fb1892ea268f8f.png

9efbab593defc5d00bf4355ef837e1e3.gif

绘制基本流程图

数据准备

流程图作为一种有向图,与树图、网络图一样,数据由节点以及两点之间的边组成。

let dataset ={
    
  nodes: [
    { id: 0,label: "流动人员",shape: "rect"},
    { id: 1,label: "安全筛查",shape: "rect"},
    { id: 2,label: "热像仪人体测温筛查",shape: "diamond"},
    { id: 3,label: "人工复测",shape: "diamond"},
    { id: 4,label: "快速通过",shape: "rect"},
    { id: 5,label: "紧急处理",shape: "rect"}
   ],
   edges: [
     { source: 0,target: 1,label: ""},
     { source: 1,target: 2,label: ""},
     { source: 2,target: 4,label: "正常"},
     { source: 2,target: 3,label: "不正常"},
     { source: 3,target: 5,label: "不正常"},
     { source: 3,target: 4,label: "正常"}
   ]
}

绘图

使用 dagre-d3 绘制流程图分为以下个步骤

1.引入 d3.js 以及 dagre-d3.js 两个文件。2.使用 dagre-d3 创建 Graph 对象,并添加节点和边。3.创建渲染器并在 svg 上绘制流程图。

//引入 d3,dagre-d3
<script src="./d3.v5.min.js">script>
<script src="./dagre-d3.min.js">script>
<script>
// 创建 graph 对象
let g = new dagreD3.graphlib.Graph();
//设置图
g.setGraph({
 rankdir:'TB'
});
dataset.nodes.forEach(item => {
    g.setNode(item.id, {
      /
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值