echarts 关系图力导向图实现右键弹出操作框

效果图:

在这里插入图片描述

html 代码:

<!--echarts图表-->
<div id="prem5">
   <div id="option_prem5" style="height:500px;"></div>
</div>
<!--右键弹出菜单-->
<div id="rightMenu" class="menu" style="display: none;height:200px;width:100px;overflow-y:auto;background:#EEEEEE;">
    <ul>
        <li>
            <button id="btn_Grid_comm" class="md-trigger btn btn-menu btn-sm" data-modal="modal-1">主机通信
            </button>
        </li>
        <li>
            <button id="btn_Grid_peiZhi" class="md-trigger btn btn-menu btn-sm" data-modal="modal-1">
                主机配置
            </button>
        </li>
        <li>
            <button id="btn_Grid_process" class="md-trigger btn btn-menu btn-sm" data-modal="modal-1">
                主机进程
            </button>
        </li>
        <li>
            <button id="btn_Grid_treediagram" class="md-trigger btn btn-menu btn-sm" data-modal="modal-1">
                配置详情
            </button>
        </li>
        <li>
            <button id="btn_Grid_version" class="md-trigger btn btn-menu btn-sm" data-modal="modal-1">
                软件版本
            </button>
        </li>
    </ul>
</div>

js 代码:

function caozuokuang() {
        /**
         * 鼠标右键,弹出右键操作菜单
         */
        $("#option_prem5").bind("contextmenu", function () {
            return false;
        });//防止默认菜单弹出(查看图像,图像另存为等)
        myChart.on("contextmenu", function (params) {
            // console.log('params',params)
            $('#rightMenu').css({
                'display': 'block',
                'left': params.event.offsetX + 15,
                'top': params.event.offsetY - 150
            });
            //todo 右键菜单刚弹出时,隐藏鼠标悬停菜单
            $("#option_prem5>div:nth-child(2)").hide();
        });
        /**
         * 点击画布的时候隐藏右键菜单
         */
        $('#prem5').click(function () {
            $('#rightMenu').css({
                'display': 'none',
                'left': '-9999px',
                'top': '-9999px'
            });
        });
    }

css 代码:

/* 不加这一行序列前面会有空格 */
*{padding: 0;margin: 0;}
/*右键菜单样式*/
.menu{
    /*这个样式不写,右键弹框会一直显示在画布的左下角*/
    position: absolute;
    background: #444444;
    border-radius: 5px;
    left: -99999px;
    top: -999999px;
}
.menu ul{list-style: none}
.menu ul li{
    padding: 5px 10px;
    color: #ffff;
    align-content: center;
    border-bottom: 1px dashed #ffffff;
    font-size: 14px;
}
.menu ul li:last-child{
    border-bottom: none;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Echarts是一个基于JavaScript的可视化库,可以用来展示各种表,包括力导向。在Echarts中,力导向可以用来展示不同节点之间的关系。 要实现人物关系导向,需要先准备好数据。数据应该包含每个人物的名称、ID以及其与其他人物之间的关系。可以用JSON格式来表示数据,如下所示: ```json { "nodes": [ {"id": "1", "name": "张三"}, {"id": "2", "name": "李四"}, {"id": "3", "name": "王五"}, {"id": "4", "name": "赵六"}, {"id": "5", "name": "钱七"}, {"id": "6", "name": "孙八"} ], "links": [ {"source": "1", "target": "2"}, {"source": "1", "target": "3"}, {"source": "2", "target": "4"}, {"source": "3", "target": "4"}, {"source": "4", "target": "5"}, {"source": "4", "target": "6"} ] } ``` 上面的数据表示了6个人物之间的关系,其中节点表示人物,links表示人物之间的关系。source和target表示连接的两个节点的ID。 接下来,我们需要使用Echarts来展示这个力导向。首先,需要引入Echarts的库文件: ```html <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> ``` 然后,创建一个<div>元素,并给它一个ID,作为表的容器: ```html <div id="chart" style="width: 600px; height: 400px;"></div> ``` 接下来,使用JavaScript代码来绘制力导向: ```javascript var myChart = echarts.init(document.getElementById('chart')); var option = { series: [{ type: 'graph', layout: 'force', symbolSize: 50, roam: true, label: { show: true }, data: data.nodes, links: data.links, force: { repulsion: 1000, edgeLength: 50 } }] }; myChart.setOption(option); ``` 上面的代码中,首先创建了一个Echarts实例,并指定了表的容器。然后,定义了一个option对象,其中包含了力导向的各种参数。其中,type为'graph'表示是一个力导向,layout为'force'表示使用力导向布局,symbolSize表示节点的大小,roam表示开启拖拽和缩放功能,label为节点的标签,data和links分别表示节点和边的数据,force表示力导向布局的参数,repulsion表示节点之间的斥力,edgeLength表示边的长度。 最后,使用setOption方法将option应用到表中,即可显示人物关系导向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值