一文玩转【relation-graph 关系图谱】再也不怕遇到这样的需求

✨ 关于 relation-graph

relation-graph是支持Vue2、Vue3、React的关系数据展示组件,支持通过【插槽】让使用者使用"普通HTML元素、Vue组件、React组件"来完全自定义图形元素,并提供实用的API接口让使用者轻松构建可交互的图形应用。
官网文档:https://www.relation-graph.com/#/index
在这里插入图片描述

✨ 基本使用:(Vue3.0)

第一步:在项目中安装对应的插件

npm install --save relation-graph-vue3

第二步:创建对应SFC组件

<template>
  <div>
    <div style="border: #efefef solid 1px; height: calc(100vh - 100px);width: 100%;">
      <relation-graph ref="graphRef$" :options="options" >
      			<template #node="{node}">
				<div class="node-item" @click="showNodeTips(node, $event)">
					//自定义节点中显示内容
					<div class="node-item-info">
						<div class="node-item-info-item">
							<div class="item-label">所属部门:</div>
							<div class="item-value">部门编号+部门名称</div>
						</div>
						<div class="node-item-info-item">
							<div class="item-label">工作电话:</div>
							<div class="item-value">00-1234 1234</div>
						</div>
						<div class="node-item-info-item">
							<div class="item-label">工作邮箱:</div>
							<div class="item-value">Pall.Lin.123@manpowergrc.com</div>
						</div>
						<div class="node-item-info-item">
							<div class="item-label">下属人数:</div>
							<div class="item-value">198</div>
						</div>
					</div>
				</div>
			</template>
		</relation-graph>
    </div>
  </div>
</template>
<script setup name="RelationGraph">
import RelationGraph from 'relation-graph-vue3'
const options = {
  "backgroundImage": "https://ssl.relation-graph.com/images/relatioon-graph-canvas-bg.png",
  "backgroundImageNoRepeat": true,
  "disableDragNode": true,
  "defaultFocusRootNode": false,
  "disableNodeClickEffect": true,
  "disableLineClickEffect": true,
  "defaultExpandHolderPosition": "bottom",
  "defaultNodeBorderWidth": 1,
  "defaultNodeColor": "#ffffff",
  "defaultNodeBorderColor": "#D8D8D8",
  "defaultNodeFontColor": "#303133",
  "defaultLineColor": "#999",
  "checkedLineColor": null,
  "defaultLineShape": 4,
  "defaultNodeShape": 1,
  "defaultNodeWidth": 340,
  "defaultNodeHeight": 148,
  "defaultJunctionPoint": "tb",
  "layouts": [
    {
      "label": "中心",
      "layoutName": "tree",
      "centerOffset_x": 0,
      "centerOffset_y": 0,
      "distance_coefficient": 1,
      "layoutDirection": "v",
      "from": "top",
      "levelDistance": "",
      "min_per_width": "360",
      "max_per_width": 500,
      "min_per_height": "300",
      "max_per_height": 500
    }
  ]
}
const jsonData = {
    rootId: 'a',
    nodes: [
      { id: 'a', text: 'a', },
      { id: 'b', text: 'b', },
      { id: 'c', text: 'c', },
      { id: 'd', text: 'd', },
      { id: 'e', text: 'e', },
      { id: 'f', text: 'f', },
    ],
    lines: [
      { from: 'a', to: 'b', },
      { from: 'a', to: 'c', },
      { from: 'a', to: 'd', },
      { from: 'a', to: 'e', },
      { from: 'a', to: 'f', },
    ],
  }
//点击当前节点
const showNodeTips = (nodeObject, $event) => {
	isShowNodeTipsPanel.value = true
}
// 点击画布事件
const onCanvasClick = ($event) => {
	isShowNodeTipsPanel.value = false
}
onMounted(()=>{
//初始化画布
	const graphInstance = graphRef.value?.getInstance()
	if (graphInstance) {
			graphInstance.setOptions(options)
			graphInstance.setJsonData(jsonData)
			graphInstance.moveToCenter()
			graphInstance.zoomToFit()
		}
	})

第三步:自定义配置界面
在这里插入图片描述
基本配置json

const options = {
  "backgroundImage": "https://ssl.relation-graph.com/images/relatioon-graph-canvas-bg.png",
  "backgroundImageNoRepeat": true,
  "disableDragNode": true,
  "defaultFocusRootNode": false,
  "disableNodeClickEffect": true,
  "disableLineClickEffect": true,
  "defaultExpandHolderPosition": "bottom",
  "defaultNodeBorderWidth": 1,
  "defaultNodeColor": "#ffffff",
  "defaultNodeBorderColor": "#D8D8D8",
  "defaultNodeFontColor": "#303133",
  "defaultLineColor": "#999",
  "checkedLineColor": null,
  "defaultLineShape": 4,
  "defaultNodeShape": 1,
  "defaultNodeWidth": 340,
  "defaultNodeHeight": 148,
  "defaultJunctionPoint": "tb",
  "layouts": [
    {
      "label": "中心",
      "layoutName": "tree",
      "centerOffset_x": 0,
      "centerOffset_y": 0,
      "distance_coefficient": 1,
      "layoutDirection": "v",
      "from": "top",
      "levelDistance": "",
      "min_per_width": "360",
      "max_per_width": 500,
      "min_per_height": "300",
      "max_per_height": 500
    }
  ]
}

数据格式:

 const jsonData = {
    rootId: 'a',
    nodes: [
      { id: 'a', text: 'a', },
      { id: 'b', text: 'b', },
      { id: 'c', text: 'c', },
      { id: 'd', text: 'd', },
      { id: 'e', text: 'e', },
      { id: 'f', text: 'f', },
    ],
    lines: [
      { from: 'a', to: 'b', },
      { from: 'a', to: 'c', },
      { from: 'a', to: 'd', },
      { from: 'a', to: 'e', },
      { from: 'a', to: 'f', },
    ],
  }

数据赋值:

graphRef$.value.setJsonData(jsonData)

完成这些之后我们就可以得到一个基本的关系图谱
在这里插入图片描述
在这里插入图片描述

✨ 如何自定义图谱结构以及样式

1.配置界面进行可视化配置
在这里插入图片描述

2.完成之后点击此处,copy 出我们的json对象,替换到我们自定义组件中即可
在这里插入图片描述
3.具有丰富的事件与交互供大家使用
在这里插入图片描述
常用的事件:

  1. node-click 节点点击事件
  2. line-click 节点连线点击事件
  3. canvas-click 画布点击事件

4.自定义图表动画效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/786482.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java面试八股之MySQL的redo log和undo log

MySQL的redo log和undo log 在MySQL的InnoDB存储引擎中&#xff0c;redo log和undo log是两种重要的日志&#xff0c;它们各自服务于不同的目的&#xff0c;对数据库的事务处理和恢复机制至关重要。 Redo Log&#xff08;重做日志&#xff09; 功能 redo log的主要作用是确…

uniapp版即时通讯软件 IM社交交友聊天系统 语音视频通话双端APP 聊天交友APP源码 (含搭建教程)

修复音视频&#xff08;官方团队插件&#xff0c;无二次费用&#xff09;&#xff0c;文件发送&#xff0c;公告&#xff0c;签到&#xff0c;发现页&#xff0c;朋友圈删除&#xff0c;轮询客服&#xff0c;马甲等 可内嵌第三方网页连接&#xff0c;后台添加&#xff0c;带完…

Java面经知识点汇总版

Java面经知识点汇总版 算法 14. 最长公共前缀&#xff08;写出来即可&#xff09; Java 计算机基础 数据库 基础 SQL SELECT first_name, last_name, salary FROM employees WHERE department Sales AND salary > (SELECT AVG(salary)FROM employeesWHERE department Sal…

美容美发在线预约小程序源码系统 前后端完整分离 带完整的安装代码包以及搭建教程

系统概述 在当今这个快节奏的社会&#xff0c;美容美发服务已经成为人们日常生活中不可或缺的一部分。为了满足广大消费者的便捷预约需求&#xff0c;以及美容美发行业的数字化转型趋势&#xff0c;一款高效、易用、功能全面的在线预约小程序显得尤为重要。今天&#xff0c;我…

Docker安装BRIA-RMBG-1.4模型,背景去除

目录 前言 模型描述 训练数据 定性评估 docker安装 运行 结论 Tip&#xff1a; 问题1&#xff1a; 问题2&#xff1a; 前言 BRIA 背景去除 v1.4 模型 RMBG v1.4 是我们最先进的背景去除模型&#xff0c;旨在有效地将各种类别和图像类型的前景与背景分开。该模型已在…

在Linux上运行macOS:深度解析OSX-KVM项目

在Linux上运行macOS&#xff1a;深度解析OSX-KVM项目 在现代开发和测试环境中&#xff0c;能够在不同操作系统之间无缝切换是至关重要的。对于开发者而言&#xff0c;如何在Linux系统上运行macOS一直是一个挑战。然而&#xff0c;OSX-KVM项目为我们提供了一种高效的解决方案&a…

ctfshow-web入门-文件上传(web161、web162、web163)远程包含

目录 1、web161 2、web162 3、web163 1、web161 先传配置文件&#xff0c;可以上传成功 因为我前面给的 .user.ini 都是带了图片头 GIF89a 的&#xff0c;前面的题这个图片头可以去掉&#xff0c;但是在这里如果去掉是不行的。 因此后面上传的东西我们都带上这个图片头&…

【CUDA|CUDNN】安装

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 显卡驱动安装参考之前的文章 cuda、cudnn 安装 1. cuda 安装 访问https://developer.nvidia.com/cuda-toolkit-archive 选择需要的版本&#xff1a;h…

昇思25天学习打卡营第13天|应用实践之ResNet50迁移学习

基本介绍 今日的应用实践的模型是计算机实践领域中十分出名的模型----ResNet模型。ResNet是一种残差网络结构&#xff0c;它通过引入“残差学习”的概念来解决随着网络深度增加时训练困难的问题&#xff0c;从而能够训练更深的网络结构。现很多网络极深的模型或多或少都受此影响…

Gartner发布采用美国防部模型实施零信任的方法指南:七大支柱落地方法

零信任是网络安全计划的关键要素&#xff0c;但制定策略可能会很困难。安全和风险管理领导者应使用美国国防部模型的七大支柱以及 Gartner 研究来设计零信任策略。 战略规划假设 到 2026 年&#xff0c;10% 的大型企业将拥有全面、成熟且可衡量的零信任计划&#xff0c;而 202…

分享五款软件,成为高效生活的好助手

​ 给大家分享一些优秀的软件工具,是一件让人很愉悦的事情&#xff0c;今天继续带来5款优质软件。 1.图片放大——Bigjpg ​ Bigjpg是一款图片放大软件&#xff0c;采用先进的AI算法&#xff0c;能够在不损失图片质量的前提下&#xff0c;将低分辨率图片放大至所需尺寸。无论…

STM32CubeIDE离线汉化教程

按照网上的方法下载好ZIP文件后 帮助->安装新软件-> 按顺序选择文件 点击完成&#xff0c;后等待右下脚的精度条到位即可

浮动刹车盘和固定刹车盘有什么区别

在讨论刹车系统的设计理念时&#xff0c;浮动和固定刹车盘无疑是两个重要的分支。 它们各自拥有独特的设计哲学、工作原理以及适用场景&#xff0c;这些差异直接影响到了制动系统的性能和耐久性。 浮动刹车盘和固定刹车盘在设计和工作原理上有显著的区别&#xff0c;主要体现在…

Linux: 命令行参数和环境变量究竟是什么?

Linux: 命令行参数和环境变量究竟是什么&#xff1f; 一、命令行参数1.1 main函数参数意义1.2 命令行参数概念1.3 命令行参数实例 二、环境变量2.1 环境变量概念2.2 环境变量&#xff1a;PATH2.2.1 如何查看PATH中的内容2.2.2 如何让自己的可执行文件不带路径运行 2.3 环境变量…

自动化立体仓库设计步骤:7步

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是关于自动化立体仓库设计步骤的详细指南&#xff0c;其核心内容包括以下几个阶…

如何禁用键盘上的特定键或快捷方式?这里有详细步骤

要禁用特定的键盘键或快捷键吗&#xff1f;微软官方应用程序Microsoft PowerToys使这项任务变得非常简单。以下是使用Microsoft PowerToys中的键盘管理器禁用特定键或快捷方式的快速指南。 如果你还没有安装Microsoft PowerToys 如果你的设备上没有安装Microsoft PowerToys&a…

新能源汽车推广 - 世媒讯软文发稿需要注意什么

在环保意识日益增强和政策支持的背景下&#xff0c;新能源汽车市场迎来了前所未有的发展机遇。对于新能源汽车企业而言&#xff0c;如何有效地推广产品成为了关键。而软文发稿作为一种重要的营销手段&#xff0c;能够通过内容的形式潜移默化地影响消费者的认知和决策。那么&…

由于找不到emp.dll无法运行游戏的多个有效解决方法分享

在玩游戏时候是否遇到过找不到emp.dll,无法继续执行代码问题无法打开游戏&#xff1f;那么这个emp.dll是什么呢&#xff1f;为什么会丢失&#xff0c;emp.dll丢失要怎么办&#xff1f;今天就给大家详细介绍一下emp.dll文件与emp.dll丢失的多个解决方法&#xff01; 一、emp.dll…

【AI技术的未来之路】从模型到应用,跨越超级应用陷阱,迈向个性化智能体

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 ​ 目录 引言 一、AI技术应用场景探索&#xff1a; 二、避免超级应用陷阱的策略&#xff1a; 三、个…

PaddleVideo:Squeeze Time算法移植

参考PaddleVideo/docs/zh-CN/contribute/add_new_algorithm.md at develop PaddlePaddle/PaddleVideo GitHubAwesome video understanding toolkits based on PaddlePaddle. It supports video data annotation tools, lightweight RGB and skeleton based action recognitio…