前端 | 燃尽图绘制

2024-06-07 15:44
文章标签 前端 绘制 frontend 燃尽

本文主要是介绍前端 | 燃尽图绘制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 📚实现效果
  • 📚模块实现解析
    • 🐇html
    • 🐇css
    • 🐇javascript

📚实现效果

在这里插入图片描述

在这里插入图片描述

📚模块实现解析

🐇html

  • 搭框架
    <div id="LINE2"><div id="cloudtitle">TED100篇打卡<span>燃尽图</span></div><p style="font-size: 0.9vw; color: #575656;">燃尽图用于<span style="color: #2966cf; font-size: 0.9vw;">追踪</span>TED100天打卡挑战的进度。<br>两条曲线分别代表<span style="color: #2966cf; font-size: 0.9vw;">预计剩余</span><span style="color: #2966cf; font-size: 0.9vw;">实际剩余</span>的阅读篇数。<br>粉色散点展示<span style="color: #2966cf; font-size: 0.9vw;">当天阅读篇数</span></p><div id="line2"></div></div>
    

🐇css

  • 蹭一下#line

    #line, #line2{width: 100%;height: 300px;top: -45px;
    }
    

🐇javascript

  • 配置项详解

    • tooltip:显示预计剩余、实际剩余、当天阅读篇数以及与预计进度的差异。
    • 多个数据系列,每个系列定义了一种数据的展示方式。
      • ①预计进度,用虚线表示。
      • ②实际进度,使用实线表示。
      • ③实际进度的条形图,用于堆叠显示。
      • ④每日学习变化的折线图,使用虚线表示。
      • ⑤每日学习变化的散点图,用于突出显示每天的变化。
    // 预计进度数据
    var expectedData = [100, 99, 98, ...
    ];// 实际进度数据
    var actualData = [100, 98, 97,...
    ];var dateData = ["02-29", "03-01",...
    ];var changeData = actualData.map((value, index) => {return index === 0 ? 0 : Math.abs(value - actualData[index - 1]);
    });var myChart2 = echarts.init(document.getElementById('line2'));var option2 = {tooltip: {trigger: 'axis',axisPointer: {type: 'line'},formatter: function (params) {var res = params[0].axisValue; var expected = params[0].value; var actual = params[1].value; var diff = expected - actual;// 找到对应的changeData值var dailyChangeIndex = params[0].dataIndex;var changeValue = changeData[dailyChangeIndex];return res + '<br/>' +'预计剩余: ' + expected + '篇<br/>' +'实际剩余: ' + actual + '篇<br/>' +'当天阅读篇数: ' + (changeValue !== undefined ? changeValue : 0) + '篇<br/>'+'目前'+(diff >= 0 ? '提前 ' + diff + ' 篇' : '落后 ' + -diff + ' 篇') + '<br/>';}},xAxis: {type: 'category',boundaryGap: false,data: dateData},yAxis: [{type: 'value',splitLine: {show: false }},{type: 'value',position: 'right',splitLine: {show: true, lineStyle: {width: 0.5, type: 'solid' }}}],series: [{name: '预计进度',type: 'line',smooth: true, lineStyle: {type: 'dashed', width: 3,       color: '#ecbc41' },data: expectedData},{type: 'line',data: actualData,yAxisIndex: 0,itemStyle: {color: '#2966cf'}},{name: '实际进度',type: 'bar',stack: 'total',data: actualData,itemStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#aed0ee' },{ offset: 1, color: '#f6f9e4' }])}},{name: '每日学习变化',type: 'line',yAxisIndex: 1,data: changeData,lineStyle: {color: '#FFCCD9', width: 0.9, type: 'dashed', shadowColor: 'rgba(0,0,0,0)', shadowBlur: 0 }},{name: '每日学习变化',type: 'scatter',yAxisIndex: 1,data: changeData,symbolSize: '3.5',itemStyle: {color: '#CC2C6C', borderColor: '#FFCEBF',},emphasis: {itemStyle: {color: '#FF89AD', borderColor: '#FEB0C6', }}}],dataZoom: [{show: true,start: 0,end: 100},{type: 'inside',start: 0,end: 100}],
    };// 使用配置项和数据显示图表
    myChart2.setOption(option2);window.addEventListener('resize', function() {myChart2.resize();
    });
    
  • 准备数据:预计进度数据、实际进度数据以及日期数据。

    var expectedData = [100, 99, 98, ...]; // 预计进度数据
    var actualData = [100, 98, 97, ...];   // 实际进度数据
    var dateData = ["02-29", "03-01", ...]; // 日期数据
    
  • 计算日变化:计算实际数据的日变化量。

    var changeData = actualData.map((value, index) => {return index === 0 ? 0 : Math.abs(value - actualData[index - 1]);
    });
    
  • 响应窗口大小变化:确保图表在不同屏幕尺寸下都能正确显示。

    window.addEventListener('resize', function() {myChart2.resize();
    });
    

这篇关于前端 | 燃尽图绘制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039602

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni