vis.js network 图谱层级设置小demo 基本操作,单击,双击

使用vis.js绘制图谱可以实现网络拓扑功能,下面就给大家介绍一下层级图谱的操作,

完成一个最简单的网络图,需要两个资源文件:

vis.js
vis.css
下载地址:https://visjs.org/#download_install
当然在官网也有层级图谱这方便的讲解,同学可以参考:官方层级图谱

先看一下效果图是不是你想要的效果:
在这里插入图片描述
下面就看一下我这个菜鸡写的小demo,这个是在python的django里写的html,

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="{% static 'js/jquery-1.11.3.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'vis/vis.min.js' %}"></script>
</head>
<style>
    #mynetwork{
        width: 1300px;
        height: 799px;
        border: 1px solid lightgray;
    }
</style>
<body>
{#   画布   #}
<div id="mynetwork"></div>
<span></span>

</body>
<script>
{#    绘制函数    #}
    function draw() {
        var container = document.getElementById('mynetwork');
        var n = [];
        var e = [];
        {#    模拟生成参数  在实际应用中这些参数都是由后台传递过来 #}
        for (var i = 0; i < 20; i++) {
                {#   节点参数    #}
                n.push({id: i, label: String(i)})
            }
            {#  节点之间的边长参数   #}
            e.push({from: 0, to: 1, label: 5,id:'0_1'});
            e.push({from: 0, to: 2, label: 4,id:'0_2'});
            e.push({from: 0, to: 3, label: 3,id:'0_3'});
            e.push({from: 0, to: 4, label: 1,id:'0_4'});
            e.push({from: 1, to: 5, label: 3,id:'1_5'});
            e.push({from: 2, to: 3, label: 6,id:'2_3'});
            e.push({from: 2, to: 6, label: 11,id:'2_6'});
            e.push({from: 3, to: 7, label: 6,id:'3_7'});
            e.push({from: 1, to: 10, label: 2,id:'1_10'});
            e.push({from: 1, to: 11, label: 3,id:'1_11'});
            e.push({from: 2, to: 8, label: 4,id:'2_8'});
            e.push({from: 2, to: 9, label: 2,id:'2_9'});
            e.push({from: 12, to: 9, label: 2,id:'12_9'});
            e.push({from: 1, to: 12, label: 1,id:'1_12'});
            e.push({from: 3, to: 14, label: 2,id:'3_14'});
            e.push({from: 13, to: 15, label: 2,id:'13_15'});
            e.push({from: 13, to: 16, label: 2,id:'13_16'});
            e.push({from: 13, to: 17, label: 2,id:'13_17'});
            e.push({from: 13, to: 18, label: 2,id:'13_18'});
            e.push({from: 18, to: 19, label: 2,id:'18_19'});
            {#   对节点设置层级   #}
            n[0]["level"] = 0;
            n[1]["level"] = 1;
            n[2]["level"] = 0;
            n[3]["level"] = 1;
            n[4]["level"] = 1;
            n[5]["level"] = 2;
            n[6]["level"] = 1;
            n[7]["level"] = 2;
            n[8]["level"] = 1;
            n[9]["level"] = 2;
            n[10]["level"] = 2;
            n[11]["level"] = 2;
            n[12]["level"] = 2;
            n[13]["level"] = 0;
            n[14]["level"] = 2;
            n[15]["level"] = 1;
            n[16]["level"] = 1;
            n[17]["level"] = 1;
            n[18]["level"] = 1;
            n[19]["level"] = 2;

            var data = {
                edges: e,
                nodes: n,
            };
            {#  效果设置   #}
            var options = {
                scale:0.8,    
                nodes: {
                    shape: 'dot',
                    size: 15,
                },
                edges: {
                    smooth: false,
                    arrows: {
                        to: true
                    }
                },
                // 布局
                layout: {
                    //分级
                    hierarchical: {
                        levelSeparation: 150,    //不同层次之间的距离
                        nodeSpacing: 200,        //自由轴上节点之间最小距离
                        treeSpacing: 500,         //不同树之间的距离
                        // 方向
                        direction: 'UD',
                        sortMethod: 'hubsize'   // hubsize, directed
                    }
                }
            };
            network = new vis.Network(container, data, options)
    }

draw();
    network.on('click',function (params) {
        if(params.nodes.length){
            $('span').html('单击' + params.nodes[0])
        }else if(params.edges.length){
            $('span').html('单击边长' + params.edges[0])
        }
    });
    network.on('doubleClick',function (params) {
        if(params.nodes.length){
            $('span').html('双击双击' + params.nodes[0])
        }
    })

</script>
</html>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JSP中使用vis.js可以实现知识图谱的可视化展示,并且可以通过vis.js提供的API实现增删改查操作。下面是实现步骤: 1. 在JSP页面中引入vis.jsvis-network.css文件。 ```html <link rel="stylesheet" type="text/css" href="vis-network.css"> <script type="text/javascript" src="vis.js"></script> ``` 2. 创建一个空的div元素,用于展示知识图谱。 ```html <div id="mynetwork"></div> ``` 3. 在JSP页面中定义一个JavaScript变量,用于存储知识图谱的数据。 ```javascript var nodes = new vis.DataSet([ {id: 1, label: 'Node 1'}, {id: 2, label: 'Node 2'}, {id: 3, label: 'Node 3'}, {id: 4, label: 'Node 4'}, {id: 5, label: 'Node 5'} ]); var edges = new vis.DataSet([ {from: 1, to: 2}, {from: 1, to: 3}, {from: 2, to: 4}, {from: 2, to: 5} ]); var data = { nodes: nodes, edges: edges }; ``` 4. 初始化vis.js图形界面,并将数据绑定到图形界面上。 ```javascript var container = document.getElementById('mynetwork'); var options = {}; var network = new vis.Network(container, data, options); ``` 5. 使用vis.js提供的API实现增删改查操作。 例如,添加一个节点: ```javascript var newNode = {id: 6, label: 'Node 6'}; nodes.add(newNode); ``` 删除一个节点: ```javascript nodes.remove(6); ``` 更新一个节点: ```javascript var updatedNode = {id: 1, label: 'Updated Node 1'}; nodes.update(updatedNode); ``` 查询一个节点: ```javascript var node = nodes.get(1); ``` 以上就是在JSP中使用vis.js实现知识图谱的可视化展示,并且实现增删改查操作的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值