使用echart绘制拓扑图,树类型,自定义tooltip和label样式,可收缩

news2025/2/26 22:13:06

效果如图:
在这里插入图片描述
鼠标移上显示
在这里插入图片描述

vue3 - ts文件
“echarts”: “^5.4.3”,

import { EChartsOption } from 'echarts'
import * as echarts from 'echarts/core'
import { TooltipComponent } from 'echarts/components'
import { TreeChart } from 'echarts/charts'
import { CanvasRenderer } from 'echarts/renderers'
echarts.use([TooltipComponent, TreeChart, CanvasRenderer])
export const treeOptions: EChartsOption = {
  tooltip: {
    trigger: 'item',
    triggerOn: 'mousemove',
    // 自定义数据
    formatter: function (params) {
      const data = params.data
      const str = `
        <div style="background:#FFF;display: flex;justify-content: space-between; gap:10px">
          <div>
            <p>设备名称:</p>
            <p>设备编号:</p>
            <p>设备状态:</p>
            <p>最新读取时间:</p>
            <p>最新读数:</p>
          </div>
          <div style="text-align: right">
            <p>${data.name || '-'}</p>
            <p>${data.deviceCode || '-'}</p>
            <p style="color:${data.status ? 'green' : ''}">${data.status ? '在线' : '离线'}</p>
            <p>${data.time || '-'}</p>
            <p>${data.value || '0'}kwh</p>
          </div>
        </div>`
      return str
    }
  },
  backgroundColor: '#FFFFFF',
  series: [
    {
      type: 'tree',
      name: '',
      data: [data],
      top: '1%',
      left: '15%',
      bottom: '1%',
      right: '15%',
      emphasis: {
        itemStyle: {
          borderWidth: 5
        }
      },
      label: {
        position: 'left',
        verticalAlign: 'middle',
        align: 'right',
        color: '#fff',
        backgroundColor: '#F0F2F5',
        borderRadius: [0, 0, 4, 4],
        formatter: (params) => {
          return '{name|' + params.name + '}\n{value|' + params.value + '}'
        },
        rich: {
          name: {
            backgroundColor: '#0560D2',
            color: '#fff',
            align: 'center',
            fontSize: '14px',
            padding: [10, 20],
            borderRadius: [4, 4, 0, 0]
          },
          value: {
            align: 'center',
            fontSize: '18px',
            padding: [15, 20],
            color: '#0560D2'
          }
        }
      },
      leaves: {
        label: {
          verticalAlign: 'middle',
          align: 'center'
        }
      },
      symbolSize: 10,
      expandAndCollapse: true,
      animationDuration: 550,
      animationDurationUpdate: 750
    }
  ]
}

处理数据格式如下

const data = {
  name: '配电机房',
  value: 100,
  children: [
    {
      name: '1号配电房(kWh)',
      value: 20,
      deviceCode: 'ELECT001',
      time: '2024-03-18 14:42:44',
      status: true,
      children: [
        {
          name: '1号专变(kWh)',
          value: 20
        }
      ]
    },
    {
      name: '2号配电房(kWh)',
      value: 40,
      collapsed: true, // 如果为 true,表示此节点默认折叠。
      children: [
        {
          name: '2号专变(kWh)',
          value: 20
        },
        {
          name: '3号专变(kWh)',
          value: 20
        }
      ]
    },
    {
      name: '3号配电房(kWh)',
      value: 40,
      children: [
        {
          name: '4号专变(kWh)',
          value: 20
        },
        {
          name: '5号专变(kWh)',
          value: 10
        },
        {
          name: '6号专变(kWh)',
          value: 10
        }
      ]
    }
  ]
}

依据个人项目框架引入,类似如下

<Echart :options="treeOptionsData" :height="780" />

import { EChartsOption } from 'echarts'
import { treeOptions } from './echarts-data'
const treeOptionsData = reactive<EChartsOption>(treeOptions) as EChartsOption
//处理
//treeOptionsData!.series[0].data = ..

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

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

相关文章

VR历史建筑漫游介绍|虚拟现实体验店|VR设备购买

VR历史建筑漫游是一种利用虚拟现实技术&#xff0c;让用户可以身临其境地参观和探索历史建筑的体验。通过VR头显和相关设备&#xff0c;用户可以在虚拟环境中自由移动和互动&#xff0c;感受历史建筑的真实氛围和文化内涵。 在VR历史建筑漫游中&#xff0c;您可以选择不同的历史…

拿捏指针(三)

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言 &#xff08;感谢您的光临&#xff0c;您的光临蓬荜生辉&#xff09; 前言 在这之前我们学习了《拿捏指针&#xff08;一&#xff09;》&#xff0c;《拿…

Centos7部署使用TELEMAC-MASCARET

Background TELEMAC-MASCARET是一款研究水动力学和水文学领域的高性能数值仿真开源软件。MASCARET&#xff08;1980&#xff09;和 TELEMAC&#xff08;1987&#xff09;最初是由法电集团所属的法国国立水利与环境实验室开发&#xff0c;随后整合为TELEMAC-MASCARET并由法英德三…

后端系统开发之——创建注册接口

原文地址&#xff1a;后端系统开发之——创建注册接口 - Pleasure的博客 下面是正文内容&#xff1a; 前言 这是一篇SpringBoot项目的实践篇。 主要用于介绍如何从零开始搭建某一种类型的系统。 个人认为&#xff0c;只要后端逻辑完善了&#xff0c;纵使前端页面千变万化都可…

【DL经典回顾】激活函数大汇总(二十四)(Absolute附代码和详细公式)

激活函数大汇总&#xff08;二十四&#xff09;&#xff08;Absolute附代码和详细公式&#xff09; 更多激活函数见激活函数大汇总列表 一、引言 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里&#xff0c;激活函数扮演着不可或缺的…

个人开发者上架App流程

摘要 个人开发者完全可以将自己开发的App上传至应用商店进行上架。本文将介绍上架流程的通用步骤&#xff0c;包括确定App功能和定位、准备相关资料、开发App、提交审核、发布App和宣传推广等内容。 引言 个人开发者在如今的移动应用市场中也有机会将自己的作品推向更广泛的…

【书生·浦语大模型实战营】学习笔记3

文章目录 1. 大模型开发范式2. LangChain简介3. 构建向量数据库4. 搭建知识库助手5. Web Demo部署6. 动手实战环节环境配置知识库搭建InternLM接入LangChain构建检索问答链部署Web Demo 参考资料 1. 大模型开发范式 LLM局限性&#xff1a; 知识时效性&#xff1a;LLM无法获取最…

【Vue3】组件通信的的各种方式和tsx风格

组件通信 Vue2组件通信方式全局事件总线bus&#xff0c;可以实现组件通信 Vue3组件通信方式propsprovide与inject依赖注入 全局APiVue3其他改变组件通信之自定义事件组件通信之事件总线组件通信之v-model多个v-model传值 TSX风格使用风格一使用tsx风格&#xff0c;使用optionsA…

V-JEPA模型,非LLM另外的选择,AGI的未来:迈向Yann LeCun先进机器智能(AMI)愿景的下一步

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Flink源码解析(1)job启动,从JM到TM过程详解

网络传输模型 首先在看之前,回顾一下akka模型: Flink通讯模型—Akka与Actor模型-CSDN博客 注:ActorRef就是actor的引用,封装好了actor 下面是jm和tm在通讯上的概念图: RpcGateway 不理解网关的作用,可以先移步看这里:网关_百度百科 (baidu.com) 用于定义RPC协议,是…

JS11-scroll相关属性和缓动动画

scroll 相关属性 window.onscroll() 方法 当我们用鼠标滚轮&#xff0c;滚动网页的时候&#xff0c;会触发 window.onscroll() 方法。效果如下&#xff1a;&#xff08;注意看控制台的打印结果&#xff09; 如果你需要做滚动监听&#xff0c;可以使用这个方法。 我们来看看和…

用C语言打造自己的Unix风格ls命令

在Unix或类Unix操作系统中&#xff0c;ls是一个非常基础且实用的命令&#xff0c;它用于列出当前目录或指定目录下的文件和子目录。下面&#xff0c;我们将通过C语言编写一个简化的ls命令&#xff0c;展示如何利用dirent.h头文件提供的函数接口实现这一功能。 #include "…

开始喜欢上了runnergo,JMeter out了?

RunnerGo是一款基于Go语言、国产自研的测试平台。它支持高并发、分布式性能测试。和JMeter不一样的是&#xff0c;它采用了B/S架构&#xff0c;更灵活、更方便。而且&#xff0c;除了API测试和性能测试&#xff0c;RunnerGo还加上了UI测试和项目管理等实用功能&#xff0c;让测…

Jenkins Pipeline中when的用法

目录 概述内置条件branchbuildingTagchangesetchangeRequestequalsexpressiontriggeredBytagenvironmentnotallOfanyOf 在进入 stage 的 agent 前评估 whenbeforeAgentbeforeInputbeforeOptions 示例单一条件、声明性流水线多条件、声明式管道嵌套条件&#xff08;与前面的示例…

综合实验---Web---进阶版

目录 实验配置&#xff1a; 1.PHP调整主配置文件时&#xff0c;修改文件内容 1.原内容调整(在编译安装的情况下) 2.调整如下 3.没有调整的&#xff0c;根据之前配置就行 2.配置Nginx支持PHP解析 1.原内容如下 2.调整如下 3.验证PHP测试页 1.原内容如下 2.调整如下 4…

U盘安装Linux系统报dracut-initqueue错误,解决方案

U盘安装Linux系统报dracut-initqueue错误&#xff0c;是因为系统所在U盘路径不对&#xff0c;需要修改 解决方法&#xff1a; dracut:/# cd dev >dracut:/# ls |grep sdb 查看你的u盘是哪个一般是sdbX,X是一个数字&#xff0c;也有可能是sda等&#xff0c;如果上边都不对…

C语言数据结构基础——二叉树学习笔记(二)topk问题

1.top-k问题 1.1思路分析 TOP-K 问题&#xff1a;即求数据结合中前 K 个最大的元素或者最小的元素&#xff0c;一般情况下数据量都比较大 。 比如&#xff1a;专业前 10 名、世界 500 强、富豪榜、游戏中前 100 的活跃玩家等。 对于 Top-K 问题&#xff0c;能想到的最简单直…

词令微信小程序怎么添加到我的小程序?

微信小程序怎么添加到我的小程序&#xff1f; 1、找到并打开要添加的小程序&#xff1b; 2、打开小程序后&#xff0c;点击右上角的「…」 3、点击后底部弹窗更多选项&#xff0c;请找到并点击「添加到我的小程序」&#xff1b; 4、添加成功后&#xff0c;就可以在首页下拉我的…

代码随想录算法训练营第二十七天 |131.分割回文串,一些思考

实际上&#xff0c;分割子集问题也是组合问题 &#xff08;图源代码随想录网站&#xff09; 一个套路&#xff0c;也就是说&#xff0c;每次递归函数参数列表传入start的时候&#xff0c;选中的元素相当于是在最后面划了一条分割线 回文子串的判断剪枝操作就很简单了&#xf…

AIGC元年大模型发展现状手册

零、AIGC大模型概览 AIGC大模型在人工智能领域取得了重大突破&#xff0c;涵盖了LLM大模型、多模态大模型、图像生成大模型以及视频生成大模型等四种类型。这些模型不仅拓宽了人工智能的应用范围&#xff0c;也提升了其处理复杂任务的能力。a.) LLM大模型通过深度学习和自然语…