vue实现echarts饼图自动轮播

echarts官网:Examples - Apache ECharts

echartsFn.ts 把echarts函数封装成一个文件

import * as echarts from "echarts";

const seriesData = [
  {
      "value": 12,
      "name": "过流报警"
  },
  {
      "value": 102,
      "name": "高温报警"
  },
  {
      "value": 1,
      "name": "缺相报警"
  },
  {
      "value": 3,
      "name": "分闸"
  },
  {
      "value": 1,
      "name": "断电分闸"
  },
  {
      "value": 248,
      "name": "机械闭锁"
  },
  {
      "value": 97,
      "name": "漏电闭锁"
  },
  {
      "value": 4,
      "name": "过载闭锁"
  },
  {
      "value": 5,
      "name": "短路闭锁"
  }
]

// 报警类型统计
const initVisualizingContentLeftBottom = async (dom: HTMLElement | null, state: any) => {
  const myChart = dom && echarts.init(dom);

  const option = {
    legend: {
      selectedMode: false, //禁止鼠标移到legend弹出饼图中间的文字
      x: "0",
      icon: "circle",
      textStyle: {
        color: "#fff",
        fontSize: "14px",
      },
      itemWidth: 10,
      itemHeight: 10,
      itemGap: 5,
    },
    series: [
      {
        center: ["center", "65%"], // 这个属性调整图像的位置!!!!!
        type: "pie",
        radius: ["45%", "60%"],
        itemStyle: {
          borderRadius: 15, // 设置圆环的圆角弧度
        },
        emphasis: {
          // 设置高亮时显示标签
          label: {
            show: true,
          },
          scale: true, // 设置高亮时放大图形
          scaleSize: 15,
        },
        label: {
          // 设置图形标签样式
          color: "#fff", //图例文字颜色
          show: false, // 未高亮时不显示标签,否则高亮时显示的标签会与静态的标签重叠
          position: "center",
          // 设置标签展示内容,其中{d}、{b}为echarts标签内容格式器
          formatter: "{d_style|{d}}{per_style|%}\n\n{b_style|{b}}",
          // 为标签内容指定样式,只能设置series-pie.label支持的样式
          rich: {
            d_style: {
              fontSize: 40,
            },
            per_style: {
              fontSize: 30,
            },
            b_style: {
              fontSize: 20,
            },
          },
        },
        data: seriesData,
      },
    ],
  };

  myChart && myChart.setOption(option);

  let currentIndex = -1; // 当前高亮图形在饼图数据中的下标
  if (state.changePieInterval) clearInterval(state.changePieInterval); //关闭
  state.changePieInterval = myChart && setInterval(selectPie, 1000); // 设置自动切换高亮图形的定时器

  function highlightPie() {
    // 取消所有高亮并高亮当前图形
    // 遍历饼图数据,取消所有图形的高亮效果
    for (var idx in option.series[0].data)
      myChart &&
        myChart.dispatchAction({
          type: "downplay",
          seriesIndex: 0,
          dataIndex: idx,
        });
    // 高亮当前图形
    myChart &&
      myChart.dispatchAction({
        type: "highlight",
        seriesIndex: 0,
        dataIndex: currentIndex,
      });
  }

  myChart &&
    myChart.on("mouseover", (params: any) => {
      // 用户鼠标悬浮到某一图形时,停止自动切换并高亮鼠标悬浮的图形
      clearInterval(state.changePieInterval);
      currentIndex = params.dataIndex;
      highlightPie();
    });

  myChart &&
    myChart.on("mouseout", (params: any) => {
      // 用户鼠标移出时,重新开始自动切换
      if (state.changePieInterval) clearInterval(state.changePieInterval);
      state.changePieInterval = setInterval(selectPie, 1000);
    });

  function selectPie() {
    // 高亮效果切换到下一个图形
    var dataLen = option.series[0].data.length;
    currentIndex = (currentIndex + 1) % dataLen;
    highlightPie();
  }
};

export {
  initVisualizingContentLeftBottom,
};

页面文件

template代码

<div ref="visualizingContentLeftBottom" style="height: 100%;"></div>

script代码

import { toRefs, reactive, onMounted, onUnmounted, getCurrentInstance, defineComponent } from 'vue';
import { initVisualizingContentLeftBottom } from "./echartsFn";

export default defineComponent({
	setup() {
		// 页面卸载时
		onUnmounted(() => {
			clearInterval(state.changePieInterval);
			state.changePieInterval = null
		});
		// 页面加载时
		onMounted(() => {
			initVisualizingContentLeftBottom(proxy.$refs.visualizingContentLeftBottom, state)
		});

		const { proxy }: any = getCurrentInstance();
		const state = reactive({
			changePieInterval: null as any,
		});
    }
});

效果图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS动画案例6

目录 一、介绍二、静态页面的布局1.HTML部分2.CSS 三、动画交互四、结束语 一、介绍 本节内容我们来仿照一个网站&#xff08;戳我进网站&#xff09;的进入页面时的doing动画部分&#xff0c;首先是大标题从最小变为最大&#xff0c;然后是副标题从下向上走&#xff0c;最后是…

Proteus8.17下载安装教程

Proteus是一款嵌入式系统仿真开发软件&#xff0c;实现了从原理图设计、单片机编程、系统仿真到PCB设计&#xff0c;真正实现了从概念到产品的完整设计&#xff0c;其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等&#xff0c;能够帮助用…

工作-k8s问题处理篇

前言&#xff1a;公司这边为集团&#xff0c;所以项目较多&#xff0c;我目前总负责的项目架构有十六个&#xff0c;其中还有海外项目&#xff0c;不过底下也有一定的细分&#xff0c;同事解决不了的问题会升级到我这&#xff0c;只k8s容器平台常用的就有三种&#xff0c;一种是…

spring boot3.3.5 logback-spring.xml 配置

新建 resources/logback-spring.xml 控制台输出颜色有点花 可以自己更改 <?xml version"1.0" encoding"UTF-8"?> <!--关闭文件扫描 scanfalse --> <configuration debug"false" scan"false"><springProperty …

MySQL--SQL优化

目录 1 插入数据 1.1 insert优化 1.1.1 批量插入 1.1.2 手动提交事务 1.1.3 主键顺序插入 1.2 大批量插入数据 2 主键优化 2.1 数据组织方式 2.2 页分裂 2.3 页合并 2.4 主键设计原则 3 order by优化 4 group by优化 1. 使用索引 2. 减少数据集大小 3. 使用合适的聚…

【计算机网络】实验2:总线型以太网的特性

实验 2&#xff1a;总线型以太网的特性 一、 实验目的 加深对MAC地址&#xff0c;IP地址&#xff0c;ARP协议的理解。 了解总线型以太网的特性&#xff08;广播&#xff0c;竞争总线&#xff0c;冲突&#xff09;。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实…

Java函数式编程【二】【Stream的装饰】【中间操作】【map映射器】【摊平映射器flatMap】

一、Java的Stream流式编程中的中间操作 Java的Stream流式编程中&#xff0c;中间操作是对数据流进行处理的一种方式&#xff0c;这些操作通常返回流对象本身&#xff0c;以便可以链接更多的操作。以下是一些常见的中间操作&#xff1a; filter(Predicate predicate) - 用于通过…

使用pymupdf提取PDF文档中的文字和其颜色

最近我在捣鼓一个PDF文件&#xff0c;想把它里面的文字和文字颜色给提取出来。后来发现有个叫pymupdf的库能搞定这事儿。操作起来挺简单的&#xff0c;pymupdf的示例文档里就有现成的代码可以参考。 how-to-extract-text-with-color 我本地的测试代码如下&#xff1a; impor…

MYSQL 多表练习

Sutdent表的定义 ---------------------------------------------------------------------------------------------------- | 字段名 | Id | Name | Sex | Birth | Department | Address | -------------------…

2024年12月HarmonyOS应用开发者基础认证全新题库

注意事项&#xff1a;切记在考试之外的设备上打开题库进行搜索&#xff0c;防止切屏三次考试自动结束&#xff0c;题目是乱序&#xff0c;每次考试&#xff0c;选项的顺序都不同 更新时间&#xff1a;2024年12月3日 这是基础认证题库&#xff0c;不是高级认证题库注意看清楚标…

一文解析Kettle开源ETL工具!

ETL&#xff08;Extract, Transform, Load&#xff09;工具是用于数据抽取、转换和加载的软件工具&#xff0c;用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。 一、Kettle是什么&#xff1f; Kettle 是一款开源的 ETL&#x…

【模型剪枝】YOLOv8 模型剪枝实战 | 稀疏化-剪枝-微调

文章目录 0. 前言1. 模型剪枝概念2. 模型剪枝实操2.1 稀疏化训练2.2 模型剪枝2.3 模型微调总结0. 前言 无奈之下,我还是写了【模型剪枝】教程🤦‍♂️。回想当年,在写《YOLOv5/v7进阶实战专栏》 时,我经历了许多挫折,才最终完成了【模型剪枝】和【模型蒸馏】的内容。当时…

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

大语言模型微调与 XTuner 微调实战

1 大语言模型微调 1.1 什么是微调 大语言模型微调&#xff08;Fine-tuning of Large Language Models&#xff09;是指在预训练的大型语言模型基础上&#xff0c;使用特定任务的数据进一步训练模型&#xff0c;以使其更好地适应和执行特定任务的过程&#xff0c;用于使LLM&am…

C#学写了一个程序记录日志的方法(Log类)

1.错误和警告信息单独生产文本进行记录&#xff1b; 2.日志到一定内存阈值可以打包压缩&#xff0c;单独存储起来&#xff0c;修改字段MaxLogFileSizeForCompress的值即可&#xff1b; 3.Log类调用举例&#xff1a;Log.Txt(JB.信息,“日志记录内容”,"通道1"); usi…

【前端】特殊案例分析深入理解 JavaScript 中的词法作用域

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;案例代码&#x1f4af;词法作用域&#xff08;Lexical Scope&#xff09;与静态作用域什么是词法作用域&#xff1f;代码执行的详细分析 &#x1f4af;函数定义与调用的…

【Docker】Docker配置远程访问

配置Docker的远程访问&#xff0c;你需要按照以下步骤进行操作&#xff1a; 1. 在Docker宿主机上配置Docker守护进程监听TCP端口 Docker守护进程默认只监听UNIX套接字&#xff0c;要实现远程访问&#xff0c;需要修改配置以监听TCP端口。 ‌方法一&#xff1a;修改Docker服务…

贪心算法题

0简介 0.1什么是贪心算法 贪心算法是用贪婪(鼠目寸光)的角度&#xff0c;找到解决问题的最优解 贪心策略&#xff1a;(从局部最优 --> 整体最优) 1把解决问题的过程分为若干步&#xff1b; 2解决每一个问题时&#xff0c;都选择当前“看上去”最优的解法&#xff1b; 3“…

【HTTP】HTTP协议

一个Web Server就是个服务器软件&#xff08;程序&#xff09;&#xff0c;或者是运行这个服务器软件的硬件&#xff08;计算机&#xff09;&#xff0c;其主要功能是通过HTTP协议与客户端进行通信&#xff0c;来接收&#xff0c;存储&#xff0c;处理来自客户端的HTTP请求&…

分布式存储方式的地理信息数据仓库建立设计方案

背景介绍 随着地理信息技术的发展,GIS系统中的数据规模越来越庞大,传统集中式存储方式在处理高并发查询和大规模空间分析时面临瓶颈。分布式存储通过数据分片、并行计算等技术,为地理信息数据管理提供了新的解决方案。适用场景: 遥感影像存储与分析 城市交通数据管理(如G…