echarts绘制关系图

2023-11-02

效果图:

 代码:
<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>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

echarts绘制关系图 的相关文章

随机推荐

  • VC设置程序热键

    为程序设置热键就是用到一个RegisterHotKey系统API 当然些API的使用相对简单 但也需要注意一些地方 所以在使用API前请参考MSDN相关文档 本文只给出一个设置程序热键的例子代码如下 1 在OnInitDialog中调用Re
  • docker 下载kafka

    Kafka采用的是订阅 发布的模式 消费者主动的去kafka集群拉取消息 与producer相同的是 消费者在拉取消息的时候也是找leader去拉取 kafka存在的意义 去耦合 异步 中间件的消息系统 首先安装zookeeper dock
  • 使用matlab搭建BP从零搭建BP神经网络完成鸢尾花数据集分类

    iris training mat文件如下 链接 https pan baidu com s 14vb1c0noPB4YKCCdOCsofA pwd ozmz 提取码 ozmz 不赘述 正确率96 7 load iris training
  • c++中的虚函数及虚函数表

    引语 我们在学习c 中经常会碰到一些莫名其妙的性质 特性等 如虚基类继承 虚函数等 但如果从底层 内存 编译器的角度去理解 那将会发现是如此合理且必要 c 中 我们来看这一个代码 class A pubilc void fun cout l
  • 优化网站性能 提高网站速度访问速度的14条实践

    相信互联网已经越来越成为人们生活中不可或缺的一部分 ajax flex等等富客户端的应用使得人们越加 幸福 地体验着许多原先只能在C S实现的功能 比如Google机会已经把最基本的office应用都搬到了互联网上 当然便利的同时毫无疑问的
  • ChatGPT的功能,优势,以及在生活中的应用

    ChatGPT是一种基于人工智能技术的聊天机器人 它可以模拟人类的对话方式 与用户进行交互 ChatGPT的功能和优势非常多 下面将详细介绍 ChatGPT的功能 1 自然语言处理 ChatGPT可以理解自然语言 识别用户的意图和需求 从而
  • 关于golang的http库及常用库

    go语言作为一个面向网络 面向服务 高并发的一门通用语言 http库是非常重要的 下面我们来了解http库及其他标准库 http库可以对客户端做很多的工作 下面我们来看一下 func main resp err http Get https
  • xxl-job的使用及简述原理

    文章目录 前言 1 介绍 2 部署篇 2 1 初始化数据库 2 2 部署调度中心 2 2 1 集群部署 2 3 部署执行器 2 3 1 集群部署 3 使用篇 3 1 设置执行器 3 2 新建任务 3 3 启动任务 3 4 查看日志 4 原理
  • layuiadmin(官方)知识点

    动态模板 layuiAdmin 的视图是一个 动静结合 的载体 除了常规的静态模板 你当然还可以在视图中存放动态模板 因此它可谓是焦点中的焦点 定义模板 在视图文件中 通过下述规则定义模板 下面是一个简单的例子 在不对动态模板设定数据接口地
  • Rust gRPC 库 tonic 使用记录

    tonic 使用记录 服务端 cargo run bin server 客户端 cargo run bin client
  • sendfile“零拷贝”、mmap内存映射、DMA

    原创连接 https blog csdn net z69183787 article details 104760890 utm source app groupmessage KAFKA推送消息用到了sendfile 落盘技术用到了mma
  • Java入门基础第7天【Java Eclipse安装教程和修改汉化教程】

    活动地址 CSDN21天学习挑战赛 六款Java常用的开发工具 我们在学习 Java 语言程序设计必须选择一个功能强大 使用简单 能够辅助程序设计的 IDE 集成开发环境 在Java入门基础第6天 我们认识了Java六款常用的开发工具 这篇
  • 网络层(三)

    网络层 网络层基本上就是围绕着路由器展开的 因此我们很有必要学习路由器的工作原理 首先 路由器由三个部分组成 输入端口 交换结构 输出端口 我们一个一个来分析 输入端口 输入端口需要完成的任务 接收分组 确定分组应该转发到哪个输出端口 那输
  • Vue3实现数据子传父

    Vue3实现数据子传父 子组件页面 html 子组件上需要用到的方法
  • android毕业论文致谢,毕业论文致谢10篇(精选)

    毕业论文致谢10篇 精选 最后深深的感谢呵护我成长的父母 每当我遇到困难的时候 父母总是第一个给我鼓励的人 回顾20多年来走过的路 每一个脚印都浸满着他们无私的关爱和谆谆教诲 10年的在外求学之路 寄托着父母对我的殷切期望 他们在精神上和物
  • 浏览器报错:您的连接不是私密连接。 简单的处理方法

    经常会遇到以上这种提示 您的连接不是私密连接 导致无法访问网页 简单的处理方法就是 鼠标焦点在在浏览器窗口 非浏览器输入框 的任意位置输入以下英文字符串 thisisunsafe 输入完毕页面即可自动跳转正常访问
  • Java十进制转三进制

    pre class java 十进制转三进制 只实现了整数部分 author CaoChenMiao public class TentoSan private int TtS int inNum int index throws Exce
  • Go实战学习笔记-1.3流程控制

    1 前言 这里还是再总结一下流程控制 和其它语言相比做了一些优化 比如相比c增加了迭代器类型的for循环 switch针对c中容易出问题的地方做了一些修改 避免出现缺少break时存在的常见问题 此外 和Java类似也存在跳出循环和多层嵌套
  • 【操作系统】王道考研 p53 文件的基本操作

    文件的基本操作 知识总览 创建文件 在外存中找到空间 在目录中创建目录项 删除文件 找到目录项 回收磁盘块 删除目录项 打开文件 找到文件名对应目录项 将目录项复制到 打开文件表 中 注意 有两种打开文件表 系统的打开文件表和进程的打开文件
  • echarts绘制关系图

    效果图 代码