vue中使用visjs小记

vue+vis 图中的节点和线都是可以拖动的哦,在graphViz.vue的代码里面,有很多参数可以改动,可以自己改动试试看。(1)为vis创建一个单独的.vue文件,vue文件名命名必须是驼峰命名法,要不然会报错。1.搭建好vue后,可以使用npm run vis-network 下载 vis插件。(2)graphViz.vue文件具体代码如下,我的节点比较多,可以自己删一下。2.下载好之后,可以在package.json中看见依赖更新。上图就是展示的结果,在想要的位置进行展示。以上就是单独创建vis组建的代码。 阅读详情

vue中的template部分:

<div style="border-right:1px dashed #eee;">
        <!--节点编辑框-->
         <div id="node-popUp"> 
           <p id="node-operation">node</p> <br>
           <div style="margin: 10px;display:flex;align-items:center;">
             <div style="flex:0 0 30%;margin-right:10px;text-align:right;">ID</div>
             <input disabled id="node-id" value="new value" class="ivu-input ivu-input-disabled" style="margin-right:20px;"/>
          </div>
          <div style="margin: 10px;display:flex;align-items:center;">
             <div style="flex:0 0 30%;margin-right:10px;text-align:right;">节点名称</div>
             <input id="node-label" value="new value" class="ivu-input" style="margin-right:20px;" />
          </div>
          <div style="margin: 10px;display:flex;align-items:center;">
             <div style="flex:0 0 30%;margin-right:10px;text-align:right;">节点类型</div>
             <select id="node-type" class="ivu-select-selection ivu-input" style="margin-right:20px;">
                <option v-for="item in nodeType"  :value="item.type" class="ivu-select-item">{{item.label}}</option>
             </select>
          </div>
          <div style="margin: 30px 20px;">
             <input type="button" value="确定" id="node-saveButton" class="ivu-btn ivu-btn-primary" style="margin: 0 20px;" />
             <input type="button" value="取消" id="node-cancelButton" class="ivu-btn ivu-btn-primary" style="margin: 0 10px;"/>
          </div>
        </div>

      <!--连线编辑框-->
        <div id="edge-popUp">
          <p id="edge-operation">edge</p>
          <div style="margin: 10px;display:flex;align-items:center;">
            <div style="flex:0 0 30%;margin-right:10px;text-align:right;">关系名称</div>
            <input id="edge-label" value="new value" class="ivu-input" style="margin-right:20px;" />
          </div>
          <div style="margin: 10px;display:flex;align-items:center;">
            <div style="flex:0 0 30%;margin-right:10px;text-align:right;">关系类型</div>
            <select id="edge-type" class="ivu-select-selection ivu-input" style="margin-right:20px;">
              <option v-for="item in edgeType"  :value="item.color" class="ivu-select-item">{{item.label}}</option>
            </select>
          </div>
          <div style="margin: 30px 20px;">
            <input type="button" value="确定" id="edge-saveButton" class="ivu-btn ivu-btn-primary" style="margin: 0 20px;" />
            <input type="button" value="取消" id="edge-cancelButton" class="ivu-btn ivu-btn-primary" style="margin: 0 10px;"/>
          </div>
        </div>
        <div id="mynetwork">
        	<!--用于画关系图的部分-->
        </div>
      </div>

vue 中的 javascript 部分:

	export default {
	    data() {
	        return {
	          nodeType: [{//节点类型下拉选项
	            label: '蔬菜',
	            type: 'vegtables'
	          },{
	            label: '水果',
	            type: 'fruit''
	          }],
	          edgeType: [{
	            label: '资金',
	            color: '#0066CC'
	          },{
	            label: '关系',
	            color: '#9933cc'
	          },{
	            label: '物品',
	            color: '#663300'
	          }]
	        };
	    },
		mounted () {  //
		    this.draw();
		},
		methods: {
			draw () {
	          let _this = this;
	          this.nodes = new DataSet(this.nodesList);

	          // create an array with edges
	          this.edges = new DataSet(this.edgesList);
	
	          // create a network
	          var container = document.getElementById('mynetwork');
	          var data = {
	            nodes: this.nodes,
	            edges: this.edges
	          };
	          var options = {
	            autoResize: false,
	            interaction: {
	              hover: true
	            },
	            locale: 'cn',//工具栏显示中文
	            locales: {
	              cn: {//工具栏中文翻译
	                edit: '编辑',
	                del: '删除当前节点或关系',
	                back: '返回',
	                addNode: '添加节点',
	                addEdge: '添加连线',
	                editNode: '编辑节点',
	                editEdge: '编辑连线',
	                addDescription: '点击空白处可添加节点',
	                edgeDescription: '点击某个节点拖拽连线可连接另一个节点',
	                editEdgeDescription: '可拖拽连线改变关系',
	                createEdgeError: 'Cannot link edges to a cluster.',
	                deleteClusterError: 'Clusters cannot be deleted.',
	                editClusterError: 'Clusters cannot be edited.'
	              }
	          },
	          manipulation: {//工具栏
	              enabled: true,
	              initiallyActive: true, //直接显示工具栏
	              addNode: function(data, callback) {  //添加节点
	                // filling in the popup DOM elements
	                document.getElementById('node-operation').innerHTML = "新增节点";
	                document.getElementById('node-id').value = data.id;
	                data.group = 'fruit';
	                editNode(data, clearNodePopUp, callback);
	              },
	              editNode: function(data, callback) {  //编辑节点
	                // filling in the popup DOM elements
	                document.getElementById('node-operation').innerHTML = "编辑节点";
	                document.getElementById('node-id').value = data.id;
	                editNode(data, cancelNodeEdit, callback);
	              },
	              addEdge: function(data, callback) {
	                document.getElementById('edge-operation').innerHTML = "新增连线";
	                document.getElementById('edge-type').value = '#9933cc';
	                editEdgeWithoutDrag(data, callback);
	              },
	              editEdge:function(data, callback) {
	                  document.getElementById('edge-popUp').style.display = 'block';
	                  document.getElementById('edge-operation').innerHTML = "编辑连线";
	                  editEdgeWithoutDrag(data, callback);
	                }
	          },
	          nodes: { //节点配置
	              borderWidth: 0, //节点边框的宽度,单位为px
	              color: { //字体配置
	                border: '#fff',
	                background: '#fff'
	              },
	              font: { //字体配置
	                color: '#333'
	              },
	              widthConstraint: { //节点名称宽度
	                maximum: 80
	              }
	            },
	            edges: { //连线配置
	              color: {
	                color: '#9933cc',
	                highlight: '#9933cc',
	                hover: '#9933cc'
	              },
	              widthConstraint: { //连接线信息宽度
	                maximum: 50
	              },
	              smooth: true, //是否显示方向箭头
	              arrows: { //箭头指向from节点
	                to: true
	              }
	            },
	            physics: {   
	              maxVelocity: 4,
	              minVelocity: 0.62,
	            },
	            groups: {   
	              vegetables: {
	                shape: 'image',
	                image: file,
	              },
	              fruit: {
	                shape: 'circularImage',
	                image: witness,
	              }
	            }
	          };
	          window.network = new Network(container, data, options);
	
	          network.on("dragEnd", e => {  //拖拽完成
	            var _nodeId = e.nodes[0];
	            if (typeof _nodeId === 'undefined')
	              return;
	            _this.nodes.update({
	              id: _nodeId,
	              fixed: {
	                x: true,
	                y: true
	              }
	            });
	          });
	
	
	          network.on('dragStart', e => { //拖拽开始前
	            var _nodeId = e.nodes[0];
	            if (typeof _nodeId === 'undefined')
	              return;
	            _this.nodes.update({
	              id: _nodeId,
	              fixed: {
	                x: false,
	                y: false
	              }
	            });
	          });
	
	          network.on("click", params => {  //点击画布
	    
	          });
	
	          network.on("selectEdge", function (params) { //选择edge
	               console.log('selectEdge Event:', params);
	          });
	
	
	          network.on("hoverNode", params => {  //hover节点时
	            document.getElementById("mynetwork").getElementsByTagName("canvas")[0].style.cursor = "pointer";
	          });
	
	        },
	    }
	 };
	
	function editNode(data, cancelAction, callback) {
	        document.getElementById('node-label').value = data.label;
	        document.getElementById('node-type').value = data.group;
	        document.getElementById('node-saveButton').onclick = saveNodeData.bind(this, data, callback);
	        document.getElementById('node-cancelButton').onclick = cancelAction.bind(this, callback);
	        document.getElementById('node-popUp').style.display = 'block';
	      }
	
	
	 // Callback passed as parameter is ignored
	function clearNodePopUp() {
	        document.getElementById('node-saveButton').onclick = null;
	        document.getElementById('node-cancelButton').onclick = null;
	        document.getElementById('node-popUp').style.display = 'none';
	}
	
	
	function cancelNodeEdit(callback) {
	        clearNodePopUp();
	        callback(null);
	}
	
	
	function saveNodeData(data, callback) {
	        data.label = document.getElementById('node-label').value;
	        data.group = document.getElementById('node-type').value;
	        clearNodePopUp();
	        callback(data);
	}
	
	
	function editEdgeWithoutDrag(data, callback) {
	        // filling in the popup DOM elements
	        document.getElementById('edge-label').value = data.label;
	        document.getElementById('edge-saveButton').onclick = saveEdgeData.bind(this, data, callback);
	        document.getElementById('edge-cancelButton').onclick = cancelEdgeEdit.bind(this, callback);
	        document.getElementById('edge-popUp').style.display = 'block';
	}
	
	
	function clearEdgePopUp() {
	        document.getElementById('edge-saveButton').onclick = null;
	        document.getElementById('edge-cancelButton').onclick = null;
	        document.getElementById('edge-popUp').style.display = 'none';
	}
	
	
    function cancelEdgeEdit(callback) {
	        clearEdgePopUp();
	        callback(null);
	}
	
	
	function saveEdgeData(data, callback) {
	        if (typeof data.to === 'object')
	          data.to = data.to.id
	        if (typeof data.from === 'object')
	          data.from = data.from.id
	        data.label = document.getElementById('edge-label').value;
	        data.color = document.getElementById('edge-type').value;
	        clearEdgePopUp();
	        callback(data);
	}

vue中的style部分:

#mynetwork{
  width: 100%;
  height: 735px;
  margin: 0;
  border: 2px solid #fff;
  color: #3693ff;
  font: 14pt arial;
  position:relative;


  & .vis-manipulation{
    display:flex !important;
    position: absolute;
    left: 65%;
    top: 30px;
    padding-bottom: 10px;
    border-bottom: 1px solid #ccc;


    & .vis-label {
      margin: 0 0 0 23px;
      line-height: 25px;
    }


    & .vis-separator-line {
      float: left;
      display: inline-block;
      width: 1px;
      height: 21px;
      background-color: #bdbdbd;
      margin: 0 7px 0 15px;
    }


    & .vis-button{
      font-family: verdana;
      font-size: 1rem;
      background-position: 0 0;
      background-repeat: no-repeat;
      height: 24px;
      margin-left: 10px;
      cursor: pointer;
      padding: 0 8px 0 8px;
      display:inline-flex;
      background-size: contain;
    }


    & .vis-add{
      background-image: url(./img/添加节点.svg);
    }
    & .vis-connect{
      background-image: url(./img/添加连线.svg);
    }
    & .vis-edit{
      background-image: url(./img/编辑.svg);
    }
    & .vis-delete{
      background-image: url(./img/删除.svg);
    }
    & .vis-back{
      background-image: url(./img/返回.svg);
    }
  }


  & .vis-edit-mode{
    position: absolute;
    left:63%;
    top: 15px;
    height: 20px;
    & .vis-edit{
      background-image: url(./img/编辑.svg);
      background-size: contain;
      background-repeat: no-repeat;
      width: 80px;
      position: relative;
      & .vis-label {
        font-size:1rem;
        cursor:pointer;
        position: absolute;
        bottom:0;
        left: 25px;
      }
    }


  }
  & .vis-close{
    position: absolute;
    cursor: pointer;
    right:10px;
    top: 5px;
    height: 20px;
    width: 20px;
    background-image: url(./img/cross.svg);
    background-size: contain;
    background-position: 0 0;
    background-repeat: no-repeat;
  }
}


#operation {
  font-size:28px;
}
#node-popUp {
  display:none;
  position: absolute;
  top: 90px;
  right: 10px;
  z-index: 299;
  width: 400px;
  height: 300px;
  text-align: center;
  border: 1px solid #eee;
  box-shadow: 0px -5px 5px rgba(0, 0, 0, 0.14);
}
#edge-popUp {
  display:none;
  position: absolute;
  top: 90px;
  right: 10px;
  z-index: 299;
  width: 400px;
  height: 250px;
  text-align: center;
  border: 1px solid #eee;
  box-shadow: 0px -5px 5px rgba(0, 0, 0, 0.14);
}
#node-operation, #edge-operation{
  padding:10px;
  border-bottom: 1px solid #eee;
}
vue---vis实现复杂网状关系图显示 vis.js是基于浏览器的动态可视化库。能够处理大量的动态数据,实现对数据的操作和交互。 首先,贴上一个很好的vis.js参考文档:https://yajunfan.github.io/vis/#/module 案例效果如图 (1)安装【npm inatall vis --save】 (2)引入:在【main.js】中引入【import"vis/dist/vis.css";】,在展示网状图的页面引入【importVisfrom"vis";】 (3)实现 网状图实现: 首先在html.... 阅读详情

相关推荐

Vue使用vis实现拓扑图

visjs官方文档visjs示例 1. 安装 npm install vis 2. 封装成组件 <template> <div :id="id" style="width: 100%; height: 100%"></div> </template> <script> import vis from "vis"; let options; export default { data() { return { .

专注于技术,分享实战经验,探索技术边界,用代码构建更美的数字世界。 8269

visjs入门--模块manipulation

manipulation // these are all options in full. var options = { manipulation: { enabled: false, initiallyActive: false, addNode: true, addEdge: true, editNode: undefined, edi...

尊哥的博客 1862

vue 集成 vis-network 实现网络拓扑图的方法

vis.js  网站 https://visjs.org/ vs  code 下安装命令 npm install vis-network 在vue  下引入 vis-network组件 const vis = require("vis-network/dist/vis-network.min.js"); require("vis-network/dist/vis-network.min.css"); 例子代码使用 let DIR = "/jtopo/"; let nodes = [ { id: 1, shape: "circularImage", image: DIR + "server

手把手教你使用vue创建第一个vis.js

手把手教你使用vue搭建第一个vis.js项目,npm install vis安装以及import导入vis

笑到世界都狼狈的博客 3304

COLMAP性能优化实战:如何用GPU加速和并行计算让重建速度提升300%

本文详细介绍了如何通过GPU加速、并行计算和参数调优显著提升COLMAP的三维重建效率。从硬件资源分配到计算流程优化,再到大型数据集的分块处理策略,全面解析了将重建速度提升300%以上的实用技巧,特别适合处理无人机航拍和室内扫描等大规模三维重建项目。

weixin_29098391的博客 202

向量化和向量数据库的开发步骤,以及本地docker下载Redis-stack-server,以及如何将文本转成向量,以及文本向量化成功后将数据存入到Redis-stack-server这个向量数据库

内存可以作为向量数据库,但是一重启一断电数据就没了这了选择RedisStack作为向量数据,用来向量的存储,未来会改名成Redis8,也就是在原本的Reids的功能上增加了新的特性,本质上还是Redis向量数据库还可以用ElaticSearch、MongoDB等。

qq_61723836的博客 1082

【visjs】使用visjs绘制关系图

附上链接: vis网站 visjs中文使用说明文档 使用步骤: 1、安装 npm install vis-network 2、在页面中引入 <div id="mynetwork" class="myChart" :style="{width: '100%', height: '90vh'}"></div> require('vis-network/dist/dist/vis-network.min.css') const vis = require('vis-network/di

LuviaWu的博客 3318

ESP32接入扣子(Coze) API使用自定义智能体

本示例将使用ESP32开发板通过WiFi接入 **Coze API**,实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题,ESP32将通过Coze API与智能体进行通信,并返回对应的回复。本文将详细介绍了如何通过HTTP请求和JSON解析来与API进行交互,并给出完整的代码示例。

宁子希的博客 1万+

整理使用visjs生成关系拓扑图

Html引入: https://unpkg.com/browse/vis-network@6.5.2/dist/vis-network.min.js npm引入:npm install vis 在关系图的页面引入vis:import Vis from ‘vis’ 在html中定义容器:<div id=”network_id”style=”height:800px”> 在scr...

qq_32900003的博客 3234

编译opencv4.2时出现undefined reference to `jpeg_default_qtables‘错误的解决方案

操作系统:kylinV10 opencv版本:4.2.0 在编译opencv4.2.0的版本时,出现undefined reference to `jpeg_default_qtables’的错误提示,导致openc编译中断,不能继续编译,所以这个错误必须解决。 解决方案 查看错误的名字,根据名字分析,很有可能是当前系统中没有安装jpeg第三方库,到 http://www.ijg.org/上下载最新的源码包 jpegsrc.v9e.tar.gz,按如下顺序开始编译安装: tar -xzvf jpegsr.

jndingxin的专栏 5106

LangGraph 中 Human-in-the-loop

摘要:本文探讨了在自主AI Agent系统中实现"人工介入关键节点"(HIL)的技术方案,主要基于LangGraph框架构建。针对Agent可能执行高风险操作(如删除数据库)的问题,提出通过断点机制在关键节点暂停流程,实现人工审批后再继续执行。具体实现包括:(1)使用checkpointer组件持久化状态;(2)通过interrupt_before/after参数设置断点;(3)支持三种交互模式:批准、编辑和输入。文章还提供了代码示例,展示如何在不同场景(如工具调用)中动态触发人工审核机

qq_52053775的博客 153

vuejs对象更新渲染_又学Vue系列:邂逅Vuejs

大家好,好久不见!距离上次更新已经有一个多月了,从九月以来陆续停更的主要理由是看了《活着》这部电影+小说,配合“努力不一定成功,但不努力一定会很舒服”毒鸡汤,让我这段时间颓废了一把(不得不说这段日子过得确实很舒服,王者荣耀还上最强王者了)。到最近一段时间,我终于重新稍微振作了一点,开始捡起之前写的自动化测试框架,继续研究。虽然之前学过几次Vue框架,但是在编写的过程中element-ui...

weixin_42497633的博客 139

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1017

vis network(visjs)安装简单使用

vis.js可视化的出发点之一是它们可以处理动态数据,并允许对数据进行操作。为了实现这一点,vis.js包括一个基于灵活键/值 DataSet并DataView处理非结构化JSON数据的功能。 数据集DataSet,存储JSON的ID对象。可增删改查,过滤排序… 资料检视DataView,提供数据集上经过过滤或格式化的视图。通过订阅DataView中的更改,获取过滤或格式化的数据,而无需一直指定过滤器和字段类型 数据管道DataPipe,DataPipe从一个DataSet 获取数据DataView,对其

YouZi_X的博客 6006

【即插即用模块】注意力篇 | TGRS 2025 | ASD:自适应频域解耦,动态拆分高低频+空间注意力,频域空间特征双增强!

摘要: FDMF-Net提出了一种频域解耦多模态融合网络,核心组件为振幅谱解耦模块(ASD)。ASD通过自适应频域拆分和频域-空域协同增强,有效分离模态不变与模态特定特征。该模块利用MLP学习动态阈值调整高低频比例,并通过空间注意力分别强化频域特征,在遥感语义分割任务中实现了细节与结构的协同增强。实验表明,ASD模块能减少模态内冗余,提升特征判别性,为多模态数据融合提供了新思路。代码已开源,适用于需要强化细节与结构的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 310

使用node-red网关读取modbus设备点表,并上传到市政低碳平台来统计数据

最近做了一个物联网项目,具体是这样的,利用node-red网关盒子,来采集Modbus设备的点表,然后将数据转换,封装,最终上传到市政的低碳平台。上一步封装了点表的数据,调用低碳平台还需要账号密码,建筑id,这些都是固定信息,所以我们单独提出来。上一步获取到了原始的点表数据,下一步就是将这些点表数据与在低碳平台创建的采集的对应起来,并且设置好分类。读取modbus的节点,会有两个输出,我是使用的第一个输出。msg.meters 是一个数组,里面的每一个元素都是一个点表,比如厨房用水,园区照明,

知无涯 948

Vue.js中使用vis network出现的点和线更新问题

发现问题有一段时间,中文网一直没搜到结果,最终还是在github的已关闭issue里翻出了历史答案,简单翻译其中回答的部分内容,记录如下。 1.环境 前端工程vue.js,版本2.6.11。 vis-network版本5.4.1,在data()中定义全局变量network,初始化如下。 this.network = new vis.network(document.getElementB...

Mobile的专栏 3923

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

vuejs中使用echart图表

首先安装echart npm i echarts -S 加下来以使用这个图表为例 在vue组件中像这样使用: &lt;template&gt; &lt;div :class="className" :id="id" :style="{height:height,width:width}" ref="myEchart"&gt; &lt;/div&gt; &lt;/te

weixin_34362991的博客 321

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

vuejs的学习总结(四)

概述 v-show v-show的使用和v-if类似,也用于决定一个元素是否被渲染 v-show和v-if的区别: v-if和v-show都可以用来决定一个元素是否渲染 v-if为flase时,压根不会有对应的元素在DOM中 v-show对应为flase时,仅仅是将元素的display属性设置为none而已 开发过程中,我们应该如何选择呢? 当我们需要在显示与隐藏之间频繁切换时,使用v-show...

l118 235

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue 使用 vis-network 绘制网络关系图

visjs 提供了一个网络视图模块,提供给我们绘制网络之间的各个点、线之间的关系,这个的话就比较类似于echarts的地图,在地图上打点画线的逻辑,区别在于使用visjs可以拖动节点的位置、以及visjs里面还有对物理引擎等的引入。 网络是一种可视化,用于显示由节点和边组成的网络和网络。可视化易于使用,并支持自定义形状、样式、颜色、大小、图像等。网络可视化可在任何现代浏览器上流畅运行,最多可容纳数千个节点和边。为了处理大量节点,Network 支持集群。

共勉 1万+

vue中使用neovis和neo4j-driver渲染知识图谱

vue中使用neovis和neo4j-driver渲染知识图谱

qq_43509260的博客 462

js缩略图展示和js截屏

1、获取canvas页面展示缩略图,使用技术:vue+TS+visjs。 <template> <div id="minimapWrapper" class="wrapper minimapWrapperMove slide-minimap-open" > <img id="minimapImage" cl...

prey1025的博客 772

【JS】vis.js使用之vis-timeline使用攻略,vis-timeline在vue3中实现时间轴、甘特图

`vis-timeline`时间轴是一个交互式可视化图表,用于实时可视化时间数据。数据项可以只与某个时间点关联,也可以有开始和结束日期(即一个时间范围)。vis-timeline可以通过拖拽和滚动时间轴自由移动和缩放。可以在时间轴中创建、编辑和删除数据项目。轴上的时间尺度是自动调整的,支持从毫秒到年的尺度。 vis-time时间轴使用常规`HTML DOM`呈现时间轴和放在时间轴上的项目,这样的好处就是可以使用自定义css样式进行灵活定制。

余浩的博客 1万+

vue+ vis 编写星球图谱

vis.js vis.js是一个前端可视化框架,官方文档位置:http://visjs.org/docs/network/ 星球案例 vue中使用vis.js 安装 style 中有使用 less,所以需要安装一下; npm install vis --save npm install less less-loader --save 在需要使用的组件内引入vis import vis from 'vis' 定义dom <template> <div

aibujin的博客 3179

vis Network demo,源码开源 + (vue框架)

前段时间用到了,感觉不错,写了一个开源的demo,大家有兴趣的可以看看https://github.com/xiaohu12685/Network_demo_vis。 大体样子就是这样,看功能就好,界面请忽略; 就是这个vis,官网链接http://visjs.org/ ,本文提到的就是这个网络神经这一块 前端框架用的就是vue(vue没有用到任何技术含量); 这个demo...

王海虎的博客 4312
上一篇: Node.js API
下一篇: DIV+CSS(1.rem自适应)
BePowerful
博客等级 码龄10年 5粉丝 33原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值