vue2使用 vis-network 和 vue-vis-network 插件封装一个公用的关联关系图

news2025/1/19 17:19:10

效果图:

vis组件库:vis.js

vis-network中文文档:vis-network

安装组件库:

npm install vis-network vue-vis-network
或
yarn add vis-network vue-vis-network

新建RelationGraph.vue文件:

<template>
	<div>
		<div ref="networkContainer" style="height: 400px; background-color: #e7e7e7;width: 500px;"></div>
	</div>
</template>

<script>
	import {
		Network
	} from 'vis-network/standalone/esm/vis-network.js';
	import VueVisNetwork from 'vue-vis-network';

	export default {
		name:"RelationGraph",
		props: {
			nodes: {
				type: Array,
				required: true,
			},
			edges: {
				type: Array,
				required: true,
			},
			options: {
				type: Object,
				default: () => ({}),
			},
		},
		components: {
			VueVisNetwork,
		},
		mounted() {
			// 创建关联关系图
			const container = this.$refs.networkContainer;
			const data = {
				nodes: this.nodes,
				edges: this.edges,
			};
			new Network(container, data, this.options);
		},
	};
</script>

页面使用:

<div>
	<relation-graph :nodes="nodes" :edges="edges" :options="graphOptions"></relation-graph>
</div>
import RelationGraph from './RelationGraph.vue';
export default {
        components: {
			RelationGraph,
		},
		data() {
			return {
				nodes: [{
						id: 0,
						label: "大前端",
						color: {
							background: "#fd91b7"
						},
					},
					{
						id: 1,
						label: "HTML",
						color: {
							background: "#7ed6df"
						},
					},
					{
						id: 2,
						label: "JavaScript",
						color: {
							background: "#d294e2"
						},
					},
					{
						id: 3,
						label: "CSS",
						color: {
							background: "#ffb300"
						},
					}
				],
				edges: [{
						id: "e1",
						from: 0,
						to: 1,
						label: "含"
					},
					{
						id: "e2",
						from: 1,
						to: 0,
						label: "嵌"
					},
					{
						id: "e3",
						from: 0,
						to: 2,
						label: "step1"
					},
					{
						id: "e4",
						from: 0,
						to: 3,
						label: "step1"
					},
				],
				graphOptions: {
					autoResize: true, //网络将自动检测其容器的大小调整,并相应地重绘自身
					locale: "cn", //语言设置:工具栏显示中文
					//设置语言
					locales: {
						cn: {
							//工具栏中文翻译
							edit: "编辑",
							del: "删除当前节点或关系",
							back: "返回",
							addNode: "添加节点",
							addEdge: "添加连线",
							editNode: "编辑节点",
							editEdge: "编辑连线",
							addDescription: "点击空白处可添加节点",
							edgeDescription: "点击某个节点拖拽连线可连接另一个节点",
							editEdgeDescription: "可拖拽连线改变关系",
							createEdgeError: "无法将边连接到集群",
							deleteClusterError: "无法删除集群.",
							editClusterError: "无法编辑群集'",
						},
					},
					// 设置节点样式
					nodes: {
						shape: "dot", //节点的外观。为circle时label显示在节点内,为dot时label显示在节点下方
						size: 30, //节点的大小,
						shadow: false, //如果为true,则节点使用默认设置投射阴影。
						font: {
							//字体配置
							size: 18,
							color: "rgb(117, 218, 167)",
							align: "center",
						},
						color: {
							border: "transparent", //节点边框颜色
							background: "#ffc7c7", //节点背景颜色
							highlight: {
								//节点选中时状态颜色
								border: "rgb(255, 0, 0)",
								background: "rgb(255, 0, 0)",
							},
							hover: {
								//节点鼠标滑过时状态颜色
								border: "#dff9fb",
								background: "#88dab1",
							},
						},
						margin: 5, //当形状设置为box、circle、database、icon、text;label的边距
						widthConstraint: 100, //设置数字,将节点的最小和最大宽度设为该值,当值设为很小的时候,label会换行,节点会保持一个最小值,里边的内容会换行
						borderWidth: 1, //节点边框宽度,单位为px
						borderWidthSelected: 3, //节点被选中时边框的宽度,单位为px
						labelHighlightBold: false, //确定选择节点时标签是否变为粗体
					},
					// 边线配置
					edges: {
						width: 1,
						length: 200,
						color: {
							color: "#848499",
							highlight: "rgb(255, 85, 0)",
							hover: "#88dab1",
							inherit: "from",
							opacity: 1.0,
						},
						font: {
							color: "#343434",
							size: 18, // px
							face: "arial",
							background: "none",
							strokeWidth: 2, // px
							strokeColor: "#ffffff",
							align: "horizontal",
							multi: false,
							vadjust: 0,
							bold: {
								color: "#343434",
								size: 14, // px
								face: "arial",
								vadjust: 0,
								mod: "bold",
							},
							ital: {
								color: "#343434",
								size: 14, // px
								face: "arial",
								vadjust: 0,
								mod: "italic",
							},
							boldital: {
								color: "#343434",
								size: 14, // px
								face: "arial",
								vadjust: 0,
								mod: "bold italic",
							},
							mono: {
								color: "#343434",
								size: 15, // px
								face: "courier new",
								vadjust: 2,
								mod: "",
							},
						},
						shadow: false,
						smooth: {
							//设置两个节点之前的连线的状态
							enabled: true, //默认是true,设置为false之后,两个节点之前的连线始终为直线,不会出现贝塞尔曲线
						},
						arrows: {
							to: true, //默认是false
						}, //箭头指向to
					},
					// 布局
					layout: {
						randomSeed: 2, //配置每次生成的节点位置都一样,参数为数字1、2等
					},
					//计算节点之前斥力,进行自动排列的属性
					physics: {
						enabled: true, //默认是true,设置为false后,节点将不会自动改变,拖动谁谁动。不影响其他的节点
						barnesHut: {
							gravitationalConstant: -4000,
							centralGravity: 0.3,
							springLength: 120,
							springConstant: 0.04,
							damping: 0.09,
							avoidOverlap: 0,
						},
					},
				},
			}
		},
	}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高等数学基础知识篇】——一元函数微分学的应用

本文仅用于个人学习记录&#xff0c;使用的教材为汤家凤老师的《高等数学辅导讲义》。本文无任何盈利或者赚取个人声望的目的&#xff0c;如有侵权&#xff0c;请联系删除&#xff01; 文章目录 一、中值定理1.1 极值点1.2 中值定理1.2.1 罗尔中值定理1.2.2 拉格朗日中值定理1.…

036 - timezone

timestamp随着mysql的time_zone变化而变化&#xff0c;但是datetime不会&#xff1b; -- 查询mysql的变量&#xff1a; show variables;-- 模糊查询变量中带有time_zone的变量&#xff1a; show variables like %time_zone%; -- 创建表 create table test_time_zone (a dateti…

分布式 - 服务器Nginx:一小时入门系列之HTTPS协议配置

文章目录 1. HTTPS 协议2. 生成证书3. 配置 SSL4. HTTPS 协议优化 1. HTTPS 协议 HTTPS 是一种通过计算机网络进行安全通信的协议。它是HTTP的安全版本&#xff0c;通过使用 SSL 或 TLS 协议来加密和保护数据传输。HTTPS的主要目的是确保在客户端和服务器之间传输的数据是加密…

跟着文快速创建一个完整的TDesign后台系统

先创建一个文件夹 来作为项目的载体 打开终端 首先 我们执行 npm i tdesign-starter-clilatest -g全局装一下依赖 然后执行 td-starter init我不清楚你们哦 反正我第一次是报错了 告诉我们少了 babel/core 那就读字面呗 不想复杂了 直接 npm install -g babel/core全局装一…

“光遗传学治疗晚期视网膜色素变性”,9月6日星明优健执行总裁孙思睫博士直播分享

视网膜色素变性 &#xff08;Retinitis pigmentosa&#xff0c;RP&#xff09; 是一种进行性、单基因遗传的神经退行性致盲疾病&#xff0c;由超过71个不同的基因突变引起&#xff0c;并影响着全球超过200万人。视网膜色素变性会破坏视网膜的感光细胞&#xff0c;可能导致患者完…

【NX】分割曲线出现“输入行的长度为0”

在nx使用分割曲线的功能或者函数的时候&#xff0c;偶尔会提示如下&#xff1a; “输入行的长度为0”。实际上这是翻译的过&#xff0c;应该是the length of input is 0 之类的直译。 针对这种情况&#xff0c;一般要考虑是输入的曲线有问题或者点有问题&#xff0c;这时候我们…

SQLI-labs-第二关

目录 知识点&#xff1a;数字型get注入 1、在url中输入?id1 2、判断注入点 3、判断目前表的字段数 4、判断回显位置 5、爆库名 6、爆表名 7、爆字段名&#xff0c;以users表为例 ​编辑8、爆值 知识点&#xff1a;数字型get注入 思路&#xff1a; 1、在url中输入?id1 2…

Python3多线程/多进程解决方案(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 文章目录 1. 多线程2. 多进程示例1&#xff1a;multiprocessing.Pool直接实现对一个列表中的每个元素的函数操作示例2&#xff1a;使用苏神写的工具函数实现对一个迭代器中每个元素的函数操作 1. 多线程 2. 多进程 示例1&#xff1a;multiproc…

强化自主可控,润开鸿发布基于RISC-V架构的开源鸿蒙终端新品

2023 RISC-V中国峰会于8月23日至25日在北京召开,峰会以“RISC-V生态共建”为主题,结合当下全球新形势,把握全球新时机,呈现RISC-V全球新观点、新趋势。本次大会邀请了RISC-V国际基金会、业界专家、企业代表及社区伙伴等共同探讨RISC-V发展趋势与机遇,吸引超过百余家业界企业、高…

易基因:5mC DNA甲基化介导茶树组织功能分化和重要风味物质合成调控|植物研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 在植物中&#xff0c;5mC DNA甲基化修饰&#xff08;简称5mC甲基化&#xff09;是一个重要而保守的表观基因标记&#xff0c;参与基因组稳定性、基因转录调控、发育调控、非生物胁迫响应…

重生c++系列之类与对象(中篇)

好的继上期&#xff0c;我们今天带来c类与对象系列的继续学习。 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员 函数。 …

【Latex】使用技能站:(一)Visio导出矢量图并导入Latex模板

Visio导出矢量图并导入Latex模板 引言1 安装Inkscape工具1.1 官网下载并安装1.2 添加环境变量 2 Visio导出svg文件3 Inkscape 转换为PDF或EPS格式4 Latex导入.pdf或者.eps矢量图 引言 矢量图格式有&#xff1a;svg&#xff0c;eps&#xff0c;pdfVisio能导出的矢量图格式有&am…

信息技术如何监测UPS设备?看了这篇我明白了

UPS设备能够在电力中断或波动的情况下提供临时的电力支持&#xff0c;以保障办公设备的正常运行和数据的安全性。 然而&#xff0c;仅仅拥有UPS设备是不够的&#xff0c;实时监控和管理这些设备同样至关重要。通过对办公室UPS进行监控&#xff0c;我们可以及时发现电力问题、设…

哪个牌子的运动耳机比较好、运动耳机品牌推荐

跑步和健身的朋友通常喜欢戴着运动耳机&#xff0c;这样可以在运动时享受音乐的伴奏。这不仅提高了运动效果&#xff0c;还能减轻疲劳感。因此市场上涌现了许多高品质的运动耳机品牌。现在让我们来看看一些受到健身达人们推荐的耳机款式吧&#xff01; 1、南卡骨传导耳机 近年…

windows使用远程桌面连接

第一步&#xff1a;winR进入命令控制 第二步&#xff1a;输入mstsc进入远程连接界面 第三步&#xff1a;输入需要远程控制的加算器ip 注意&#xff1a; 控制计算器与被控制计算器都需要满足以下条件 可以使用远程桌面连接到 Windows 10 专业版和企业版、Windows 8.1 和 8 企…

GitLab启动失败:fail: alertmanager: runsv not running

问题描述 sudo gitlab-ctl restart &#xff0c;报错如下 &#xff1a; summergaoubuntu:/etc/gitlab$ sudo gitlab-ctl start fail: alertmanager: runsv not running fail: gitaly: runsv not running fail: gitlab-exporter: runsv not running fail: gitlab-workhorse: …

docker desktop安装es 并连接elasticsearch-head:5

首先要保证docker安装成功&#xff0c;打开cmd&#xff0c;输入docker -v&#xff0c;出现如下界面说明安装成功了 下面开始安装es 第一步&#xff1a;拉取es镜像 docker pull elasticsearch:7.6.2第二步&#xff1a;运行容器 docker run -d --namees7 --restartalways -p 9…

MySQL日期格式及日期函数实践

目录 日期格式 日期函数 CURDATE()和CURRENT_DATE()CURTIME()和CURRENT_TIME()NOW()和CURRENT_TIMESTAMP()DATE_FORMAT()DATE_ADD()和DATE_SUB()DATEDIFF()DATE()DAYNAME()和MONTHNAME() 1. 日期格式 在MySQL中&#xff0c;日期可以使用多种格式进行存储和表示。常见的日期格式…

【大数据之Kafka】五、Kafka生产者之生产经验

1 生产者如何提高吞吐量 由于linger.ms默认为0&#xff0c;即缓冲区队列中一有数据就sender线程就将其拉出到Kafka集群&#xff0c;效率比较低&#xff0c;提高生产者吞吐量有四种方式&#xff1a; &#xff08;1&#xff09;扩大批次的大小batch.size&#xff0c;默认为16k&a…