Echarts饼图-实现今日进度-动态图

news2025/2/7 21:38:22

效果预览

本次实现的是一个饼图,蓝色科技背景色,星球转动效果 + 进度显示。

GIF 2024-6-21 16-20-50

构建一个动态饼图,采用ECharts,背景为蓝色科技风,有星球转动效果。通过echarts.init初始化,设置图表尺寸和背景色,配置option对象含标题、颜色等。利用series定义渐变色并自定义渲染,通过renderItem绘制弧线和圆点。getCirlPoint函数计算坐标,draw函数更新角度实现动画。代码包括图表初始化、系列配置、动画逻辑等关键部分。完整代码可在链接处下载。

实现思路

大致实现思路:

  1. 初始化 ECharts 实例: 使用 echarts.init 方法初始化图表,并将其绑定到页面上的一个元素。
  2. 定义样式和尺寸: 设置图表容器 .EChartBox 的宽度和高度,以及图表的背景色。
  3. 配置图表选项: 创建一个 option 对象,配置图表的标题、图例、提示框、颜色等。
  4. 设置标题: 使用 title 字段定义图表标题的样式和位置。
  5. 隐藏图例和提示框: 设置 legendtooltipfalse 或相应的配置以隐藏或自定义显示。
  6. 定义颜色数组: 使用 colors 数组定义图表使用的颜色。
  7. 创建渐变色: 定义 innerRingColor 对象来创建渐变色效果,这将应用于饼图的一部分。
  8. 配置系列(Series): 在 series 数组中定义多个系列,每个系列代表饼图的一部分或一个特定的视觉效果。
  9. 自定义渲染: 使用 renderItem 方法自定义绘制饼图的某些部分,例如绘制弧线和圆点。
  10. 计算圆上点的坐标: 实现 getCirlPoint 函数,根据圆心坐标、半径和角度计算圆上点的坐标。
  11. 实现动画效果: 创建 draw 函数来更新图表的角度 angle,使用 setInterval 定时调用 draw 函数来实现旋转动画。
  12. 设置图表选项: 使用 myChart.setOption 方法应用配置项到图表。
  13. 启动动画: 在页面加载完成后,首先调用 draw 函数一次,然后使用 setTimeout 延迟启动动画循环。
  14. 停止动画: 在动画不需要时,可以清除 setInterval 设置的定时器。

整体来看,代码实现了一个具有动画效果的图表,其中包含了多个自定义系列,用于展示不同类型的请假天数。图表的图例根据 series 中的 name 自动生成,并通过 legend 配置项进行样式设置。动画效果通过改变角度 angle 并重新设置图表选项来实现。

关键代码展示

在您提供的代码中,关键部分主要涉及 ECharts 图表的初始化、配置和动画效果的实现。以下是关键代码的总结:

1. 图表初始化

var myChart = echarts.init(document.getElementById('ECharts'));

2. 配置项设置

let option = {
    // ... 全局配置项,如标题、图例、提示框等
    series: [
        // ... 系列数据配置
    ]
};

3. 饼图系列配置

series: [
    {
        name: '',
        type: 'pie',
        // ... 其他饼图配置
        data: [
            // ... 数据项
        ],
        label: {
            // ... 标签配置
        },
    },
    // ... 其他系列配置
]

4. 自定义渲染函数 renderItem

{
    name: 'ring5',
    type: 'custom',
    coordinateSystem: 'none',
    renderItem: function (params, api) {
        // ... 绘制弧线或圆点的逻辑
    },
    data: [0],
},

5. 计算圆上点的坐标的辅助函数

function getCirlPoint(x0, y0, r, angle) {
    let x1 = x0 + r * Math.cos((angle * Math.PI) / 180);
    let y1 = y0 + r * Math.sin((angle * Math.PI) / 180);
    return {
        x: x1,
        y: y1,
    };
}

6. 动画效果实现

function draw() {
    angle = angle + 3; // 更新角度
    myChart.setOption(option, true); // 应用配置项更新图表
}

// 启动动画
draw();
setTimeout(function () {
    timerId = setInterval(function () {
        draw();
    }, 100);
}, 500);

7. 应用配置项到图表

myChart.setOption(option);

这些关键代码片段概述了如何使用 ECharts 创建一个带有动画效果的饼图。动画通过改变角度 angle 并重新设置图表选项来实现。自定义渲染函数 renderItem 允许开发者绘制自定义图形,如弧线和圆点。辅助函数 getCirlPoint 用于计算圆上点的坐标,这对于绘制弧线和圆点至关重要。

完整代码

点我下载完整

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

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

相关文章

Add and Remove Rows

New Item Row 数据网格可以显示一个空行,使用户可以添加新记录。该行由显示在相应行指示符单元格内的星号(*)标识。若要取消添加新行,用户可以按Esc键。 相关API GridOptionsView.NewItemRowPosition — 允许您启用一个新的项…

快速又不失灵活性的JeecgBoot框架

简介JeecgBoot 开源界 "小普元" 超越传统商业平台。引领低代码开发模式 (OnlineCoding-> 代码生成器 -> 手工 MERGE),低代码开发同时又支持灵活编码, 可以帮助解决 Java 项目 70% 的重复工作,让开发更多关注业务。既能快速提…

如何自制一个Spring Boot Starter并推送到远端公服

在现代Java开发中,Spring Boot无疑是一个强大且便捷的框架,它通过提供大量的Starter来简化依赖管理和项目配置。有时,我们可能需要为特定功能或团队定制Starter。本文将指导你如何创建自己的Spring Boot Starter并将其推送到远程公共服务器上…

WRONGPASS invalid username-password pair or user is disabled

连接redis客户端的时候报错:WRONGPASS invalid username-password pair or user is disabled 当前redis版本为7.2.4 一、问题分析 默认情况下,Redis 7.0 使用默认用户名 default 和空密码进行身份验证。如果未设置 requirepass,则默认用户名…

C++之提高篇

1.标准输入输出流 cin与cout的使用,就不多说了,说一个有关保留小数位数的操作,使用ostream对象的precision()方法,表达的意思是数字总共有几位,注意,此时是包括整数部分的&#xff…

Charles抓取安卓应用https包演示

一、准备软件 夜神安卓模拟器 (yeshen.com) Charles (charlesproxy.com) 二、配置抓包 2.1 Charles安装PC根证书 记住这里的ip端口 三、安卓模拟器配置 3.1 配置安卓客户端网络代理 填写上文的ip端口,保存 3.2 安装根证书 3.2.1 导出根证书 linux主机执行 op…

LeetCode 算法:随机链表的复制 c++

原题链接🔗:随机链表的复制 复杂度:中等⭐️⭐️ 题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由…

[数据集][图像分类]瑜伽动作分类数据集1238张5类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):1238 分类类别数:5 类别名称:["downdog","godde…

基于YOLOv5的PCB板缺陷检测系统的设计与实现

简介 随着电子设备的广泛应用,PCB(印刷电路板)作为其核心部件,其质量和可靠性至关重要。然而,PCB生产过程中常常会出现各种缺陷,如鼠咬伤、开路、短路、杂散、伪铜等。这些缺陷可能导致设备故障&#xff0…

ASP.NET MVC-简单例子

环境: win10,.NET Framework 4.6.1 参考: ASP.NET MVC 简介 | 菜鸟教程 https://www.runoob.com/aspnet/mvc-intro.html 准备 查看 net framework 版本: cmd-> C:\Windows\Microsoft.NET\Framework\v4.0.30319>MSBuild /version Mic…

C语言笔记第16篇:编译和链接

1、翻译环境和运行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行机器指令(二进制指令) 第2种是执行环境,它用于实际执行代码 2、翻译环境 那翻译环境是怎…

动态ARP

定义 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。 动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。 ARP地址解析过程 动态ARP通过广播ARP请求和单播ARP应答这两个过…

软件测试笔记

一、介绍 软件测试是为了尽可能多地发现软件系统中的错误而不是证明软件的正确性。 1、软件缺陷是什么? 软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug。 缺陷的判定标准 软件未实现需求说明书中明确要求的功能——少功能 软件出现了需求说…

经典游戏案例:愤怒的小鸟

学习目标:愤怒的小鸟核心玩法 游戏画面 项目结构目录 部分核心代码 using System.Collections; using System.Collections.Generic; using birds; using utils; using UnityEngine;public class GameManager : MonoBehaviour {public static GameManager sInstanc…

【免费】中国电子学会2024年03月份青少年软件编程Python等级考试试卷一级真题(含答案)

2024-03 Python一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1. 下列哪个命令,可以将2024转换成2024 呢?( A)(2分) A.str(2024) B.int(2024) C.fl…

Flutter Android 调试桥 (adb)

客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。 守护程序adbd:用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。 服务器:用于管理客户端与守护程序之间的通信。服务器在开…

fastapi+vue3+primeflex前后端分离开发项目环境搭建

创建后端项目 创建文件夹: mkdir backend创建python虚拟环境: python -m venv venv使用Pycharm打开文件夹,然后配置python解释器为venv虚拟环境。 安装fastapi: pip install "fastapi[all]"编写第一个程序&#xf…

牛顿迭代法(求解整数的近似平方根)

情景再现 面试官:给你一个整数怎样最快求解他的近似平方根? 小白:可以用while循环呀! 面试官:有没有更好的方法? 小白:可以从这个数的左右两边开始迭代。 面试官:除了这个呢&#xf…

学会python——统计文件中文字出现次数(python实例九)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、统计文本文件中单词频率 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计…