echarts——折线图实现不同区间不同颜色+下钻/回钻功能——技能提升

echarts——折线图实现不同区间不同颜色+下钻/回钻功能——技能提升

  • 需求场景
  • 解决步骤1:安装echarts插件
  • 解决步骤2:html代码
  • 解决步骤3:封装option配置和initChart渲染方法
  • 解决步骤4:回钻功能

需求场景

最近在写后台管理系统时,遇到一个需求,就是要展示一个折线图。

在这里插入图片描述
注意:
1.折线图分两种颜色,前一部分是实际数据,要用orange颜色,后一部分是预测数据,要用红色展示。
在这里插入图片描述
2.点击某一个月份时,要下钻到当月的每一天的数据上,且数据要实现自动轮播展示
在这里插入图片描述
3.点击返回按钮,可以回钻到月份折线图上

下面介绍解决步骤:

解决步骤1:安装echarts插件

npm install echarts@5.4.0 --save

解决步骤2:html代码

<a-card style="margin-top: 10px"><div style="display: flex;justify-content: space-between;align-items: center;"><h3>下单金额下降</h3><a-buttonv-if="renderBackFlag"type="primary"size="small"id="return-button"@click="renderBack">返回</a-button></div><div id="lineId1" class="pieCls"></div>
</a-card>

解决步骤3:封装option配置和initChart渲染方法

import * as echarts from 'echarts';
export default {data(){return{renderBackFlag: false,byMonth: {realData:['23/7','23/8','23/9','23/10','23/11','23/12','24/1'],//实际数据的月份predictionData:['24/2','24/3','24/4'],//预测数据的月份},renderObj: {monthArr:['23/7','23/8','23/9','23/10','23/11','23/12','24/1','24/2','24/3','24/4'],monthTotal:[0,0,0,0,0,243645,2035.1318,1175.732,1256.81,324.34],dateArr:['7/1','7/2','7/3',...,'4/29','4/30'], monthDate:{'23/7':['7/1','7/2','7/3',...,'7/31'],'23/8':['8/1','8/2','8/3',...,'8/31'],...'24/4':['4/1','4/2','4/3',...,'4/30']},monthValue:{'23/7':[222,333,44,...,211],'23/8':[2333,55,77,...,444],...'24/4':[244,66,11,...,833]}},}}
}
renderLine() {let dom = document.getElementById('lineId1');let myChart = echarts.init(dom);let option = this.getOption(this.renderObj.monthArr,this.renderObj.monthTotal);this.initChart(myChart, option, dom);
},
getOption(xData, sData) {let option = null;option = {tooltip: {trigger: 'axis',formatter: (params) => {let param = params[0];if (this.renderBackFlag) {let time = param.name.split('/');return (time[0] +'月' +time[1] +'日金额:<br/>' +param.value.toFixed(2) +'元');} else {return param.name + '金额:<br/>' + param.value.toFixed(2) + '元';}},axisPointer: {type: 'shadow',},backgroundColor: 'rgba(255,255,255,1)',extraCssText: 'box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.3);',textStyle: {fontSize: 14,color: '#000',},},xAxis: {type: 'category',splitLine: { show: false },axisTick: { show: false },data: xData,},visualMap: {show: false,dimension: 0,seriesIndex: 0,pieces: [{lte: this.byMonth.realData.length - 1,color: '#f90',},{gt: this.byMonth.realData.length - 1,lte:this.byMonth.realData.length +this.byMonth.predictionData.length,color: 'red',},],},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true,},yAxis: {type: 'value',name: '',},series: [{name: '金额',type: 'line',symbolSize: 10,lineStyle: {width: 4,},itemStyle: {color: '#f90', //这里设置的拐点颜色},label: {show: true,position: 'top',formatter: function (params) {return params.value.toFixed(0);},},data: sData,},],};return option;},initChart(myChart, option, dom) {myChart.setOption(option);myChart.on('click', (params) => {let name = params.name;this.renderBackFlag = true;echarts.dispose(dom);var myChart = echarts.init(dom);option.xAxis.data = this.renderObj.monthDate[name];option.series[0].data = this.renderObj.monthValue[name];delete option.visualMap;myChart.setOption(option, true);this.lunboEcharts(myChart, option.xAxis.data.length);});},

解决步骤4:回钻功能

renderBack() {this.renderBackFlag = false;let dom = document.getElementById('lineId1');echarts.dispose(dom);clearInterval(this.timer);let myChart = echarts.init(dom);let option = this.getOption(this.renderObj.monthArr,this.renderObj.monthTotal);this.initChart(myChart, option, dom);
},

完成!!!多多积累,多多收获!!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构第十二弹---堆的应用

堆的应用 1、堆排序2、TopK问题3、堆的相关习题总结 1、堆排序 要学习堆排序&#xff0c;首先要学习堆的向下调整算法&#xff0c;因为要用堆排序&#xff0c;你首先得建堆&#xff0c;而建堆需要执行多次堆的向下调整算法。 但是&#xff0c;使用向下调整算法需要满足一个前提…

第六讲_css盒子模式

css盒子模型 1. 长度单位2. 盒子模型的组成2.1 盒子模型内容2.2 盒子模型内边距2.3 盒子模型边框2.4 盒子模型外边距 1. 长度单位 px&#xff1a;像素em&#xff1a;相对于当前元素或父元素的 font-size 的倍数 <style>.parent {height: 500px;width: 500px;background…

将Django项目从本地上传至宝塔服务器(踩坑记录)

文章目录 写在前面配置本地文件配置宝塔面板解决遇到问题展示运行结果热门文章 自我介绍 ⭐2022年度CSDN 社区之星 Top6 ⭐2023年度CSDN 博客之星 Top16 ⭐2023年度CSDN 城市之星 Top2&#xff08;苏州&#xff09; ⭐CSDN Python领域 优质创作者 ⭐CSDN 内容合伙人 推荐热门…

Three.js如何设置旋转轴心【PIVOT】

在使用Three.js开发3D应用时&#xff0c;经常碰到的一个问题就是如何自定义模型的旋转轴心&#xff08;pivot&#xff09;。例如下面的立方体&#xff0c;假设建模时的轴心在立方体的中心&#xff0c;但是如果希望立方体绕着某个指定的点旋转&#xff08;例如图中标红的顶点&am…

结构型设计模式——适配器模式

适配器模式 这个更加好理解&#xff0c;就是做适配功能的类&#xff0c;例如&#xff0c;现在手机没有了圆形耳机接口&#xff0c;只有Type-C接口&#xff0c;因此你如果还想要使用圆形耳机的话需要买个圆形接口转Type-C的转换器&#xff08;适配器&#xff09;&#xff0c;这…

IntelliJ IDEA如何使用固定地址公网远程访问本地Mysql数据库

文章目录 1. 本地连接测试2. Windows安装Cpolar3. 配置Mysql公网地址4. IDEA远程连接Mysql小结 5. 固定连接公网地址6. 固定地址连接测试 IDEA作为Java开发最主力的工具&#xff0c;在开发过程中需要经常用到数据库&#xff0c;如Mysql数据库&#xff0c;但是在IDEA中只能连接本…

CPT203-Software Engineering 笔记

Week 1 -- Introduction failure reason professional software development*** maintain, security, efficiency, acceptability two kinds***: generic, customized software deterioration 软件退化 reduce changes/ side effects after changes software engineering …

Linux信号处理浅析

一、信号从发送到被处理经历的过程 1、常见概念 (1) 信号阻塞 阻塞&#xff0c;即被进程拉黑&#xff0c;信号被发送后&#xff0c;分为两种情况&#xff0c;一种是被阻塞了&#xff08;被拉黑了&#xff09;&#xff0c;一种是没有被阻塞。 (2) 信号未决 在信号被进程处理…

AI教我学编程之C#入门程序详解与拓展

与AI肩并肩 前言一、一个简单的C#程序补充说明对话AI 二、标识符三、关键字四、Main五、空白1. 缩进2. 代码块的间距3. 操作符的空格4. 换行5. 一致性 六、语句七、从程序输出文本主题&#xff1a;从程序中输出文本1. Write 和 WriteLine 方法2. 格式字符串3. 多重标记和值4. 格…

TinyLog iOS v3.0接入文档

1.背景 为在线教育部提供高效、安全、易用的日志组件。 2.功能介绍 2.1 日志格式化 目前输出的日志格式如下&#xff1a; 日志级别/[YYYY-MM-DD HH:MM:SS MS] TinyLog-Tag: |线程| 代码文件名:行数|函数名|日志输出内容触发flush到文件的时机&#xff1a; 每15分钟定时触发…

CVE-2023-51385 OpenSSH ProxyCommand命令注入漏洞

一、背景介绍 ProxyCommand 是 OpenSSH ssh_config 文件中的一个配置选项&#xff0c;它允许通过代理服务器建立 SSH 连接&#xff0c;从而在没有直接网络访问权限的情况下访问目标服务器。这对于需要经过跳板机、堡垒机或代理服务器才能访问的目标主机非常有用。 二、漏洞简…

面试算法108:单词演变

题目 输入两个长度相同但内容不同的单词&#xff08;beginWord和endWord&#xff09;和一个单词列表&#xff0c;求从beginWord到endWord的演变序列的最短长度&#xff0c;要求每步只能改变单词中的一个字母&#xff0c;并且演变过程中每步得到的单词都必须在给定的单词列表中…