首页 > 其他分享 >前端vue3项目dagre-d3基础配置项及流程图组件示例(包括安装依赖)

前端vue3项目dagre-d3基础配置项及流程图组件示例(包括安装依赖)

时间:2024-07-02 18:57:57浏览次数:28  
标签:项及 示例 d3 label stroke dagre 节点

目录

引言

d3是什么?

dagre是什么?

dagre-d3是什么?

dagre-d3配置项

流程图示例

依赖安装

组件示例

总结


引言

因为很多文档都是英文,刚开始调研的时候比较费劲,文档里的配置像示例又比较分散,就自己整理了一下,附上测试时写的示例

d3是什么?

d3.js 是一个强大的JavaScript库,用于在Web上生成动态、交互式的数据可视化。并且提供了大量用于处理数据和创建图形的函数和方法。这些函数和方法可以组合在一起,以创建从简单的条形图到复杂的网络图等各种类型的可视化。

官网文档:

D3 by Observable | The JavaScript library for bespoke data visualizationThe JavaScript library for bespoke data visualizationicon-default.png?t=N7T8https://d3js.org/

dagre是什么?

Dagre是一个JavaScript库,主要用于创建有向图(Directed Graph)。可以为你的应用或网站创建美观、易读的图表,特别适合于数据可视化、流程图和状态机等场景。

Dagre提供了一套简单的API,允许开发者将节点和边的数据结构转换为具有良好视觉效果的图形布局。其核心算法优化了节点和边的排列方式,使得整个图看起来更加清晰且有逻辑性。此外,Dagre还能兼容各种图形渲染库,如d3.js和svg.js,进一步增强了其灵活性。

dagre-d3是什么?

Dagre-D3是基于d3的dagre渲染器,是dagre的前端子库,底层使用D3进行渲染。Dagre-D3提供了一些渲染选项,使得使用Dagre创建的图形能够以更美观和交互性的方式呈现。

官网文档:

https://github.com/dagrejs/dagre-d3/wikiicon-default.png?t=N7T8https://github.com/dagrejs/dagre-d3/wiki

dagre-d3配置项

创建对象graph

const g = new dagreD3.graphlib.Graph().setGraph({});

//TB(从上到下)、BT(从下到上)、LR(从左到右)、RL(从右到左)

g.graph().rankdir = "LR";

绘制节点setNode(节点元素(唯一),{节点元素的配置项})

g.setNode(A, {

        //节点元素的形状rect(长方形)、circle(圆)、diamond(菱形)、ellipse(椭圆)

        shape: "rect",//默认,还可以自定义详细找官网

        label: "one",  //节点元素的内容

        style: "fill: #afa",  //节点元素的背景颜色

        labelStyle: "font-weight: bold",  //节点元素的内容样式

        class: “className”

        rx: 5,  //圆角

        ry: 5

});

绘制连接

g.setEdge(节点元素1, 节点元素2, {连接线配置项});

g.setEdge("one", "two", {

        //连接箭头样式normal(实心三角), vee(箭头), undirected(无)

        arrowhead: "normal",//还可以自定义详细找官网

        label:"one-two"//连接线提示内容

        labelStyle:""//连接线提示内容样式

        style: "fill: #afa",  //连接线样式

        arrowheadStyle: "fill: #f66"//箭头样式

        arrowheadClass: ""

});

流程图示例

依赖安装

 d3

npm install d3

yarn add d3

dagre-d3

npm install dagre-d3

yarn add dagre-d3

组件示例

<script setup>
import * as d3 from "d3";
import dagreD3 from "dagre-d3";
import { onMounted } from "vue";
const digraphdHandle = () => {
  const g = new dagreD3.graphlib.Graph().setGraph({});
  g.setDefaultEdgeLabel(function () {
    return {};
  });
  //方向
  g.graph().rankdir = "LR";
  //绘制节点
  g.setNode("A", {
    shape: "circle",
    label: "A",
    style: "fill: #afa",
  });
  g.setNode("B", { label: "label:B" });
  g.setNode("C", { label: "CCC" });
  g.setNode("D", { label: "D" });
  g.setNode("E", { label: "E" });
  g.setNode("F", { label: "F" });
  //绘制连接线
  g.setEdge("A", "B", {
    arrowhead: "vee",
    arrowheadStyle: "fill: #f66",
    style: "stroke: #f66;stroke-width: 1.5px;stroke-dasharray: 5, 5;",
  });
  g.setEdge("A", "C", {
    arrowhead: "undirected",
    curve: d3.curveBasis,
  });
  g.setEdge("B", "D");
  g.setEdge("C", "E");
  g.setEdge("D", "F");
  g.setEdge("E", "F");
  const svg = d3.select("#graphSvg");
  const render = new dagreD3.render();
  // Center the graph
  const svgGroup = svg.append("g");
  render(d3.select("svg g"), g);
  svg.attr("width", g.graph().width + 40);
  svg.attr("height", g.graph().height + 40);
  svgGroup.attr("transform", "translate(20, 20)");
};
onMounted(() => {
  digraphdHandle();
});
</script>

<template>
  <div class="graph"><svg id="graphSvg" width="800" height="600"></svg></div>
</template>

<style>
.graph {
  background-color: antiquewhite;
}
#graphSvg {
  background-color: #e5ebd3;
}
.node rect {
  stroke: #999;
  fill: #fff;
  stroke-width: 1.5px;
}
.node circle {
  stroke: #999;
  /* fill: #fff; */
  stroke-width: 1.5px;
}

.edgePath path.path {
  stroke: #333;
  fill: none;
  stroke-width: 1.5px;
}
</style>

总结

前期调研使用到的一些配置项和测试示例,适用于没有接触过d3、dagre-d3的开发人员快速了解流程图开发,也方便自己日后使用。

标签:项及,示例,d3,label,stroke,dagre,节点
From: https://blog.csdn.net/m0_59603076/article/details/138194906

相关文章

  • dig 命令详解及使用示例
    一、背景知识CNAMECNAME是CanonicalName的缩写,它是DNS(域名系统)记录的一种类型。CNAME记录用于将一个域名映射(别名)到另一个域名。换句话说,当你访问一个设置了CNAME记录的域名时,你实际上被重定向到了另一个域名。例如,假设你有一个域名www.baidu.com,你想让用户通过examp......
  • 红队工具Finger 安装具体以步骤-示例centos
    1.gitclonehttps://github.com/EASY233/Finger.git如果没有yuminstallgit2.pip3install-rrequirements.txt找到finger所在的文件夹可以用find-name"Finger"进入文件中配置命令前提要安装pythonyuminstallpython-pip33.python3Finger.py-h......
  • 纳米体育数据电竞数据接口:基础数据包接口文档API示例③
    纳米体育数据的数据接口通过JSON拉流方式获取200多个国家的体育赛事实时数据或历史数据的编程接口,无请求次数限制,可按需购买,接口稳定高效;覆盖项目包括足球、篮球、网球、电子竞技、奥运等专题、数据内容。纳米数据API2.0版本包含http协议以及websocket协议,主要通过http获取数......
  • ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
    ONNXRuntime简介ONNXRuntime是一个跨平台的推理和训练机器学习加速器。ONNX运行时推理可以实现更快的客户体验和更低的成本,支持来自深度学习框架(如PyTorch和TensorFlow/Keras)以及经典机器学习库(如scikit-learn、LightGBM、XGBoost等)的模型。ONNX运行时与不同的硬件、......
  • 040【GD32F470】 灰度传感器移植成功示例
    【1TB嵌入式学习资料免费领取:https://link3.cc/sgzy】2.40灰度传感器2.40.1模块来源2.40.2规格参数工作电压:3.3V-5V工作电流:<20mA输出格式:模拟信号输出控制接口:ADC管脚数量:3Pin(2.54mm间距排针)2.40.3移植过程我们的目标是在梁山派GD32F470上能够判断当前环境......
  • 数据库系列-mysql-sql执行示例
    数据库定义语言--数据库查询语句模板--!数据库创建--创建数据库test,如果存在则不创建,默认字符集为utf8,不区分大小写,cs为大小写敏感,也可以使用utf8_bin,字符采用二进制存储CREATEDATABASEIFNOTEXISTS`test`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;......
  • RAG与LLM原理及实践(4)--- 语义相似度距离衡量的三种方式chroma示例
    语义相似度的计算是一个比较复杂的过程。今天打算先比较详细的介绍下几个相似度的距离衡量算法。相似度的排名衡量,在向量数据库vectordb的query中,被大量使用。还是直接上干货,理解下背后的逻辑和概念比较重要,后面看看源码 chromavectordb是怎么处理这个过程的。1)co......
  • 万维组态扩展图元示例文档
       演示地址:http://121.40.16.189:12000万维组态本地部署文档万维组态线上部署文档万维组态操作说明文档万维组态接入文档万维组态绑点示例文档万维组态接入源代码说明万维组态扩展图元示例文档万维组态大屏图元示例文档1、新增左侧图元模块1.1、添加菜单编辑 Sid......
  • 使用PowerShell执行的命令和示例,用于增强Windows系统的安全性巡检项目:2024
    使用PowerShell执行的命令和示例,用于增强Windows系统的安全性巡检项目:检查系统服务和进程:powershellCopyCode#列出所有正在运行的服务Get-Service|Where-Object{$_.Status-eq'Running'}#列出所有正在运行的进程Get-Process检查本地安全策略和组策略:powersh......
  • QEMU专栏 - 使用 QEMU 调试 FreeRTOS示例
    写在最前这几天一直在研究QEMU中多核ARM加载不同镜像的问题,一直不得其解,这部分后续可以分几个不分拆解下,看看为什么会出现这种问题.今天先来看看如何使用QEMU来调试FreeRTOS的示例代码.编译并运行FreeRTOS示例代码(基础版本)首先是下载代码,这种只需要看最新代......