echarts绘制关系图

news2024/10/6 20:34:39

效果图:

 代码:

<template>
    <div id="serveGraph" style="height: 100%; width: 100%; z-index: 88;"></div>
</template>
<script>
import { defineComponent,reactive,toRefs,onMounted,watch } from 'vue'
import * as echarts from 'echarts'

export default defineComponent({
    name:'drawGraph',
    props:{
        graphData:{
            type:Object,
            default:{
                data:[],
                link:[],
            }
        },
    },
    emits:[],
    components:{},
    setup(props,ctx) {
        const state = reactive({
            data:[],
            links:[],
            paramsData:[],
            myChart: null,
        })
        onMounted(() => {})
        // 初始化数据
        const init = function() {
            state.data = [];
            state.links = [];
            let dataList = props.graphData.data;
            for(var i = 0; i < dataList.length; i++) {
                var obj = {
                    "name": dataList[i].name,
                    "type":'1',
                    symbol: dataList[i].master == true ? 'image://static/images/serve-1.png' : 'image://static/images/serve-2.png',
                    "symbolSize":[90,90],
                    "dragable":false,
                    "itemStyle":{
                    },
                    "dataDetail":dataList[i],
                    "category":1,
                    "lineStyle":{
                        width:1,
                    },
                    "label":{
                        show:true, // 是否显示标签
                        offset:[0,70],
                        fontSize:16,
                        color:'#5B607D'
                    },
                }
                state.data.push(obj)
            }
            draw();
        }
        // 绘制图表
        const draw = function() {
            var option = {
                // 图表标题
                title:{
                    show: false, // 显示策略,默认值true, 可选为: true(显示) | false (隐藏)
                    text:'服务器分布', // 主标题文本, '\n'指定换行
                    x:'center', // 水平安放位置,默认为左对齐,可选为:'center','left','right',{number}(x坐标,单位px)
                    y:'center', // // 垂直安放位置,默认为全图顶端,可选为:
                    // 'top' ¦ 'bottom' ¦ 'center'¦ {number}(y坐标,单位px)
                    //textAlign: null          // 水平对齐方式,默认根据x设置自动调整
                    //backgroundColor: 'rgba(0,0,0,0)',
                    //borderColor: '#ccc',    // 标题边框颜色
                    //borderWidth: 0,         // 标题边框线宽,单位px,默认为0(无边框)
                    //padding: 5,             // 标题内边距,单位px,默认各方向内边距为5,
                    // 接受数组分别设定上右下左边距,同css
                    itemGap:40, //主副标题纵向间隔, 单位为px,默认为10 
                    textStyle: {
                        fontSize: 50,
                        fontWeight: 'bolder',
                        color: '#fff'        // 主标题文字颜色                    
                    },
                    subtextStyle: {
                        color: '#aaa'        // 副标题文字颜色
                    },
                },
                xAxis: {
                    show: false,
                    type: "value"
                },
                yAxis: {
                    show: false,
                    type: "value"
                }, 
                tooltip: {
                    trigger: 'item',
                    textStyle: { fontSize: '100%'},
                    axisPointer:{},
                    position: 'top',
                    show:true,
                    borderColor: 'red',
                    backgroundColor:'#fff',
                    textStyle:{
                        color:'#5B607D'
                    },
                    shadowColor: 'none',
                    borderWidth: '0', //边框宽度设置1
                    borderColor: 'transparent', //设置边框颜色     
                    enterable:true,             
                    formatter: params => {    
                        let string = ``;
                        string += `<div style="min-width:200px;max-height:200px;background:#fafafa">
                                        <div style="padding:10px;background:#fafafa">服务器信息详情</div>
                                        <div style="padding:10px;background:#fafafa">
                                            <div style="height:30px"><span style="display:inline-block;width:80px">名称:</span> <span>${params.data.name}</span></div>
                                        </div>
                                    </div>
                                `
                        return string;
                    },
                },  
                // backgroundColor:'rgba(255, 255, 255, 0.5)',
                // animationDurationUpdate: function (idx) {
                //     // 越往后的数据延迟越大
                //     return idx * 1000;
                // },
                // animationEasingUpdate: 'bounceIn',
                series: [
                    {
                        type: 'graph',
                        name: "服务器详情信息",
                        layout: 'force',
                        force: {
                            // initLayout:5 , // 力引导的初始化布局,默认使用xy轴的标点
                            repulsion: 1300, // 节点之间的斥力因子。支持数组表达斥力范围,值越大斥力越大。
                            gravity: 0.4, // 节点受到的向中心的引力因子。该值越大节点越往中心点靠拢。
                            edgeLength: 100, // 边的两个节点之间的距离,这个距离也会受 repulsion影响 。值越大则长度越长
                            layoutAnimation: true // 因为力引导布局会在多次迭代后才会稳定,这个参数决定是否显示布局的迭代动画
                            // 在浏览器端节点数据较多(>100)的时候不建议关闭,布局过程会造成浏览器假死。                        
                        },
                        lineStyle: { // ========关系边的公用线条样式。
                            color: '#e2e7f5',
                            width: 2, //线的粗细
                            type: 'dashed', // 线的类型 'solid'(实线)'dashed'(虚线)'dotted'(点线)
                            globalCoord: false,
                            curveness: 0.2, // 线条的曲线程度,从0到1
                            opacity: 1// 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。默认0.5
                        },
                        edgeSymbol: ['circle', 'arrow'],
                        edgeSymbolSize: 4,
                        edgeLabel: { show: false, textStyle: { fontSize: 10,color:'#fff ' }, formatter: "{c}" },
                        roam: true,
                        label: {
                            show: true,
                            color: "#fff"
                        },
                        data: state.data,
                        links: props.graphData.link,
                        draggable:true,
                        zoom:1,
                    },
                ]
            }
            state.myChart = echarts.init(document.getElementById('serveGraph'));
            window.addEventListener('resize',() => {
                state.myChart.resize();
            })
            state.myChart.setOption(option);
        }
        watch(()=>props.graphData,(val) => {
            init();
        },{
            // immediate:true,
            deep:true,
        })        
        return {
            ...toRefs(state),
        }
    }
})

</script>
<style lang="scss" scoped>

</style>

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

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

相关文章

网络工程师 快速入门

需要掌握 以下技术 1.网络 基础 知识 TCP/IP 、OSI 7层协议、IP地址、ARP地址解析协议、ICMP&#xff08;英特网控制报文协议&#xff0c;ping&#xff09;等 入门面试常问问题。 2.路由 路由匹配 三原则、静态路由、OSPF路由协议。 2.交换 如何放数据&#xff1f; VLAN TRU…

【Spring】bean的生命周期

1.具体的生命周期过程 bean对象创建&#xff08;调用无参构造器&#xff09; 给bean对象设置属性 bean对象初始化之前操作&#xff08;由bean的后置处理器负责&#xff09; bean对象初始化&#xff08;需在配置bean时指定初始化方法&#xff09; bean对象初始化之后操作&am…

C# Blazor 学习笔记(0.1):如何开始Blazor和vs基本设置

文章目录 前言资源推荐环境如何开始Blazor个人推荐设置注释快捷键热重载设置 前言 Blazor简单来说就是微软提供的.NET 前端框架。使用 WebAssembly的“云浏览器”&#xff0c;集成了Vue,React,Angular等知名前端框架的特点。 资源推荐 微软官方文档 Blazor入门基础视频合集 …

Arcgis地图实战一:单个图层中设施的隐藏及显示

文章目录 1.效果图预览2.弹框的实现3.显示及隐藏的实现 1.效果图预览 2.弹框的实现 let alert this.alertCtrl.create();alert.setTitle(请选择设施);for (let item of this.ctralllayers) {alert.addInput({type: checkbox,label: item.name,value: item.id,checked: item.vi…

音量压低处理流程

开始 通过申请临时DUCK焦点可以压低其他在播放的音源&#xff0c;如源码中的注释&#xff0c;不会暂停其他在播放的音源&#xff0c;而是降低输出&#xff0c;在车载情景下&#xff0c;一般在地图导航或者语音播报的情景下会申请这个焦点。 // AudioManager.java /*** Used t…

Netty自定义消息协议的实现逻辑处理粘包拆包、心跳机制

Netty 自定义消息协议的实现逻辑自定义编码器 心跳机制实现客户端发送心跳包 自定义消息协议的实现逻辑 消息协议&#xff1a;这一次消息需要包含两个部分&#xff0c;即消息长度和消息内容本身。 自定义消息编码器︰消息编码器将客户端发送的消息转换成遵守消息协议的消息&…

Andorid解析XML格式数据遇到的坑

以下是《第一行代码 第三版》解析XML格式数据部分遇到的坑 一、首先是安装Apache遇到的坑 具体参考文章Apache服务器下载安装及使用&#xff08;更新&#xff09;_apache下载_★邱↓邱★的博客-CSDN博客&#xff08;可以不看文中的安装部分了&#xff09; 启动服务那块儿建议…

Java:Map的getOrDefault()方法结果仍为null

1、问题 今天在工作中遇到一个问题&#xff0c;在一个通用的数据处理方法中&#xff0c;方法会从一个Map类型参数通过key里获取对象value&#xff0c;但方法的调用者并不都会传递value实例&#xff0c;若没有获取到value则需要初始化一个&#xff0c;处理方式是调用了Map的getO…

操作系统的运行机制、中断和异常、系统调用

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 操作系统 一、操作系统的运行机制1.1内核程序1.2应用程序1…

vue3项目基于vue-router跳转到登录页面

创建项目 #创建项目 #选择vue3 选择npm vue create devops-front#安装vue-router 路由 npm install -g cnpm --registryhttps://registry.npmmirror.com cnpm install vue-router4 #启动项目 vue run serve app.vue 定义<router-view/> 路由入口 <template>&l…

微信小程序(van-tabs) 去除横向滚动条样式(附加源码解决方案+报错图)

问题描述 今天第一次接触vant组件库。 ant官网地址适用于Vue3 支持Vue2、Vue3、微信小程序等 我在使用van-tabs组件时遇到了一个问题&#xff0c;如下图所示&#xff1a; 从图片上可以看到有个灰色的横向滚动条&#xff0c;一开始领导给我说这个问题&#xff0c;我反反复复都…

LED显示屏维修检测方法

电阻检测 对于显示屏的电阻检法&#xff0c;我们需将万用表调到电阻档&#xff0c;先检测一块正常电路板的某点到地电阻值&#xff0c;然后再检测另一块相同电路板的同一个点测试与正常的电阻值是否有不同&#xff0c;如有不同则就知道了该显示屏问题的范围&#xff0c;反之则不…

掌握终端基础技巧:Linux下的文件和目录复制操作

在Linux系统中&#xff0c;命令行终端是一个大而高效的工具&#xff0c;让使用者可以通过简单的命令完成各种任务。其中&#xff0c;文件和目录的复制操作是日常使用频率较高的一项操作。本文将介绍Linux下的文件和目录复制基础技巧&#xff0c;帮助您更好地掌握命令行终端的使…

直播读弹幕机器人:直播弹幕采集+文字转语音(附完整代码)

目录 前言代码实现请求数据解析数据文字转语音完整代码 高级点的tk界面版 前言 直播读弹幕机器人是指能够实时读取直播平台上观众发送的弹幕&#xff0c;并将其转化为语音进行播放的机器人。这种机器人通常会使用文字转语音技术&#xff0c;将接收到的弹幕文本转为语音&#x…

牛客小白月赛74 F题解

文章目录 最便宜的构建问题建模问题分析1.分析所求2.方法1用并查集判断k个点集是否连通&#xff0c;不连通则由小到大添加边代码 3. 方法2使用带权并查集维护当前集合所连通的点集个数代码 4.方法3通过二分确定值代码 最便宜的构建 问题建模 给定n个点m条边的带权无向图&#…

初阶结构体(超详解)

初阶结构体 1. 结构体的声明1.1 结构的基础知识1.2 结构的声明1.3 结构成员的类型1.4 结构体变量的初始化和定义 2. 结构体的访问3. 结构体传参 1. 结构体的声明 1.1 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量 结…

电商高并发设计之SpringBoot整合Redis实现布隆过滤器

文章目录 问题背景前言布隆过滤器原理使用场景基础中间件搭建如何实现布隆过滤器引入依赖注入RedisTemplate布隆过滤器核心代码Redis操作布隆过滤器验证 总结 问题背景 研究布隆过滤器的实现方式以及使用场景 前言 本篇的代码都是参考SpringBootRedis布隆过滤器防恶意流量击穿缓…

让数据管理由繁至简的低代码开发平台

随着社会数字化能力的快速升级&#xff0c;各行各业正逐渐迈向数字化转型的新时代。尤其是AI的爆发&#xff0c;数据智能技术正在彻底改变着这个行业的面貌&#xff0c;随着越来越多的企业开始将人工智能、机器学习和大数据分析技术应用到其业务中&#xff0c;数据的价值正在得…

深度解剖动态内存管理

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 望小伙伴们点赞&#x1f44d;收藏✨加关注哟&#x1f495;&#x1…

【项目 进程8】 2.17 内存映射(1) 2.18内存映射(2)

文章目录 2.17 内存映射&#xff08;1&#xff09;内存映射内存映射相关系统调用使用内存映射实现父子进程间通信使用内存映射实现没有关系的进程间的通信 2.18内存映射&#xff08;2&#xff09;内存映射的注意事项使用内存映射实现内存拷贝的功能匿名映射 2.17 内存映射&…