Echarts折线图

实现效果:

代码:

<template><div class="echarts"><div class="select-box"><div v-for="(item,index) in trendList":key="index":class="[period == item.id?'active':'','item']"@click="trendClick(item,index)">{{ item.name }}</div></div><div class="echarts-box"><div id="trendChart" ref="trendChart" :style="trendStyle"></div></div></div>
</template>
<script>
// import * as echarts from 'echarts' // 方法2 局部引用
export default {data () {return {// 选择项列表trendList: [{id: 1,name: '今年'},{id: 2,name: '近一年'},{id: 3,name: '近两年'},{id: 4,name: '近三年'}],// 当前选中的 日期period: 1,trendStyle: { height: '460px', with: '100%' }, // 趋势echarts的样式// 后端返回的数据-假数据trendData: {2021: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]2022: [0, 0, 0, 0, 0, 0, 0, 0, 0, 22.65, 13.75, 21.95]2023: [20.33, 18.74, 16.07, 11.03, 7.97, 8.38, 10.78, 8.66, 12.64, 10.67, 8.39, 9.94]2024: [18.32, 16.58, 17.18, 14.19, 19.76, 14.65, 0, 0, 0, 0, 0, 0]},optionTrend: { // 趋势统计-折线图// backgroundColor: 'transparent',title: {// 副标题subtext: '单位:tCO₂e',// 副标题文本样式subtextStyle: {fontWeight: 'normal',fontSize: 14,color: '#666'},// top: -10,left: '2%'},legend: {// left: '16%',top: '2%',// orient: 'vertical',// data: ['2020年', '2021年', '2022年', '2023年', '2024年']// data: Object.keys(this.trendData) // 对象属性data: []},// 提示框配置tooltip: {trigger: 'axis', // 触发方式: 'axis':设置为坐标轴触发提示框   'item':当鼠标悬浮在某个数据项上时触发  'none':不触发鼠标悬浮显示数据backgroundColor: '#cccccc38', // 设置背景色,textStyle: {color: '#333' // 设置字体颜色},extraCssText: 'box-shadow: 0 0 5px rgba(0,0,0,0.3)', // 提示框阴影边框axisPointer: {lineStyle: {color: '#CCCCCC' // 设置垂直线的颜色}// label: { // x轴在鼠标移入时的样式//   show: true, // 显示才生效//   backgroundColor: 'transparent', // 背景色//   color: '#bcf', // 文字颜色// }},// axisPointer: {//   lineStyle: {//     color: {//       type: 'linear',//       x: 0,//       y: 0,//       x2: 0,//       y2: 1,//       colorStops: [{//         offset: 0,//         color: 'rgba(126,199,255,0)' // 0% 处的颜色//       }, {//         offset: 0.2,//         color: '#21BB7E' // 100% 处的颜色//       }, {//         offset: 0.4,//         color: '#6584FF' // 100% 处的颜色//       }, {//         offset: 0.6,//         color: '#FFB74F' // 100% 处的颜色//       }, {//         offset: 0.8,//         color: '#9B6BFF' // 100% 处的颜色//       }, {//         offset: 1,//         color: 'rgba(126,199,255,0)' // 100% 处的颜色//       }],//       global: false // 缺省为 false//     }//   }// },padding: [15, 20],formatter: function (params) {// console.log(params)let result = ''result += params[0].name + '<br />'for (let i = 0; i < params.length; i++) {result += '<div style="diaplay: inline-block;padding:2px 8px;margin-bottom: 10px;background-color: #fff;">' +params[i].marker + params[i].seriesName + '年: ' + params[i].value + '  tCO₂e' + '<br />' +'</div>'}return result}},grid: {top: '10%',left: '02%',right: '4%',bottom: '0%',containLabel: true},xAxis: [{type: 'category',axisLine: {// y轴线的颜色以及宽度//   show: false,lineStyle: {color: '#ccc',width: 1,type: 'solid'}},splitArea: {show: false},axisLabel: {textStyle: {color: '#666'}// color: '#fff'},splitLine: {show: false},axisTick: {show: false},boundaryGap: true, // 坐标轴两边留白。 boundaryGap 可以配置为 true 和 false。默认为 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间// boundaryGap: ['20%', '20%'], // boundaryGap是一个两个值的数组,分别表示数据最小值和最大值的延伸范围,可以直接设置数值或者相对的百分比,在设置 min 和 max 后无效。data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']// data: xDate}],yAxis: [{type: 'value',min: 0,splitLine: {show: true,lineStyle: { // 网格横线的样式color: '#E5E5E5', // 线条颜色type: 'solid', // 线条类型(solid、dashed、dotted)curveness: 0 // 线条曲度(0为直线)}},axisLine: {show: true,symbol: ['none', 'arrow'], // 加箭头处symbolOffset: 20, // 使箭头偏移lineStyle: {color: '#CCCCCC', // 设置y轴的颜色shadowOffsetY: -20, // 利用阴影进行反向延长shadowColor: '#CCCCCC' // 设置阴影的颜色}},axisLabel: {// show: false,// margin: 20,textStyle: {color: '#666'}},axisTick: {show: false}}],series: [// {//   name: '2023年',//   type: 'line',//   smooth: true, // 是否平滑//   // showAllSymbol: false,//   showSymbol: false,//   symbol: 'circle',//   symbolSize: 6,//   itemStyle: {//     color: '#00ca95',//     borderColor: 'rgba(0,202,149,0.2)',//     borderWidth: 12,//     shadowColor: 'rgba(0,202,149,0.1)',//     shadowBlur: 0,//     shadowOffsetY: 2,//     shadowOffsetX: 2//   },//   lineStyle: {//     normal: {//       width: 3 // 折线的宽度//     }//   },//   data: ['800', '1400', '808', '811', '626', '488', '1600', '1100', '500', '300', '1998', '822']//   // data: thisYearTrend//   // areaStyle: {//   //   normal: {//   //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{//   //       offset: 0,//   //       color: 'rgba(0,202,149,0.3)'//   //     },//   //     {//   //       offset: 1,//   //       color: 'rgba(0,202,149,0)'//   //     }//   //     ], false),//   //     shadowColor: 'rgba(0,202,149, 0.9)'//   //     // shadowBlur: 20//   //   }//   // },// },// {//   name: '2022年',//   type: 'line',//   smooth: true,//   showSymbol: false,//   symbol: 'circle',//   symbolSize: 6,//   // areaStyle: {//   //     normal: {//   //         color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{//   //             offset: 0,//   //             color: 'rgba(199, 237, 250,0.5)'//   //         }, {//   //             offset: 1,//   //             color: 'rgba(199, 237, 250,0.2)'//   //         }], false)//   //     }//   // },//   itemStyle: {//     normal: {//       color: 'rgb(0,136,212)',//       borderColor: 'rgba(0,136,212,0.2)',//       borderWidth: 12//     }//   },//   // itemStyle: {//   //     normal: {//   //         color: '#f7b851'//   //     }//   // },//   lineStyle: {//     normal: {//       width: 3 // 折线的宽度//     }//   },//   data: ['1200', '1100', '1008', '1411', '1026', '1288', '1300', '800', '1100', '1000', '1118', '1322']//   // data: lastYearTrend1// }]},}},mounted () {this.$nextTick(() => {this.getEcharts()})},methods: {// -点击日期按钮trendClick (data, index) {// console.log(data, index, '点击日期')this.period = data.id // 选中改变样式this.getEcharts()},// 获取趋势折线图getEcharts () {// 此处本来是直接调用接口的,这里就写点假数据if (this.$refs.trendChart) {this.optionTrend.legend.data = Object.keys(this.trendData) // 对象属性// console.log(this.optionTrend.series, 'this.optionTrend.series')this.optionTrend.series = []let colorArr = ['#21BB7E','#6584FF','#FFB74F','#9B6BFF'// '#ee6666',// '#73c0de',// '#D0E6A5',// '#fc8452',// '#ea7ccc',// '#FF0033',// '#09F7F7']let borderArrColor = ['rgba(0,202,149,0.2)', 'rgba(101,132,255,0.2)', 'rgba(255,183,79,0.2)', 'rgba(155,107,255,0.2)']for (let i in this.trendData) {// console.log(i, '对象属性')this.optionTrend.series.unshift({name: i, // 线条-名称type: 'line',smooth: true, // 是否平滑// showAllSymbol: false,showSymbol: false,symbol: 'circle',symbolSize: 6,// // 矢量画五角星// symbol: 'path://M150 0 L80 175 L250 75 L50 75 L220 175 Z',// symbolSize: 8,itemStyle: {// color: '#00ca95',// borderColor: 'rgba(0,202,149,0.2)',// borderWidth: 12color: colorArr[i % colorArr.length],borderColor: borderArrColor[i % borderArrColor.length],// color: colorArr[this.optionTrend.series.length % colorArr.length],// borderColor: borderArrColor[this.optionTrend.series.length % colorArr.length],borderWidth: 12},lineStyle: {normal: {width: 3 // 折线的宽度// shadowColor: colorArr[i % colorArr.length], // 阴影颜色// shadowBlur: 10, // 阴影的模糊大小// shadowOffsetY: 7 // 阴影垂直方向上的偏移距离}},data: this.trendData[i] // 对象的属性值})}// 遇到数据更新,视图未更新两种解决方法 --解决echarts数据更新,页面不刷新问题// 1.添加 trendcharts.clear()// // const trendcharts = echarts.init(this.$refs.trendChart)// const trendcharts = this.$echarts.init(this.$refs.trendChart)// trendcharts.clear()// // 对实例对象进行配置// trendcharts.setOption(this.optionTrend)// ------// 2. setOption有3个属性,setOption(option,notMerge,lazyUpdate);第二个notMerge默认为false,即默认合并数据,设置成true之后就不合并数据,从而实现刷新页面的效果。// const trendcharts = echarts.init(this.$refs.trendChart)const trendcharts = this.$echarts.init(this.$refs.trendChart)trendcharts.setOption(this.optionTrend, true)}}}
}
</script>
<style lang="scss" scoped>
.echarts{.select-box {display: flex;align-items: center;width: 514px;height: 60px;.item {width: 98px;height: 40px;line-height: 40px;text-align: center;background-color: #fff;border: 1px solid #afa6a6;border-radius: 2px;margin: 20px 10px 20px 0;cursor: pointer;}.active {color: #fff;background-color: #bcf;}}.echarts-box {width: 100%;height: 480px;}
}
</style>

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

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

相关文章

PyMuPDF 操作手册 - 08 API - Document属性方法和简短说明

文章目录 https://pymupdf.readthedocs.io/en/latest/document.html#Document 方法/属性简短描述Document.add_layer()仅限 PDF:进行新的可选内容配置Document.add_ocg()仅限 PDF:添加新的可选内容组Document.authenticate()访问加密文档Document.bake()仅限 PDF:将…

Spring Boot集成geode快速入门Demo

1.什么是geode&#xff1f; Apache Geode 是一个数据管理平台&#xff0c;可在广泛分布的云架构中提供对数据密集型应用程序的实时、一致的访问。Geode 跨多个进程汇集内存、CPU、网络资源和可选的本地磁盘&#xff0c;以管理应用程序对象和行为。它使用动态复制和数据分区技术…

【C++】类和对象(中)--上篇

个人主页~ 类和对象上 类和对象 一、类的六个默认成员函数二、构造函数1、构造函数基本概念2、构造函数的特性 三、析构函数1、析构函数的概念2、特性 四、拷贝构造函数1、拷贝构造函数的概念2、特征 一、类的六个默认成员函数 如果有个类中什么成员都没有&#xff0c;那么被称…

数据库安装

1.选择最下面自定义安装 2.选择x64 3.next 4.完成后next 5.next 6.选择如图&#xff0c;next 7.如图 8.输入密码 9.如图 10.如图 11.安装 12.完成 13.控制面板选择系统和安全 14.选择系统 15.高级系统设置 16.环境变量 17.双击打开path 18.新建 19.输入MySQLbin文件夹路径 20.管…

firewalld(4) Rich Rule

简介 前文介绍了firewall基本原理&#xff0c;基础的命令使用、保存、以及zone的配置&#xff0c;前面文章我们在配置zone的时候有些复杂的条件&#xff0c;比如限速、日志记录等并不能直接在zone中进行配置。本篇文章主要介绍richlanguage&#xff0c;它能提供更加丰富的策略配…

分布式日志采集 Loki 配置及部署详细

分布式日志采集 Loki 配置及部署详细 Loki 部署模式Loki 读写分离部署配置Loki 配置大全 Loki 部署模式 &#xff08;1&#xff09;可扩展部署模式 Loki 的简单可扩展部署模式是最简单的部署方式、首选方式。可扩展到每天几TB的日志&#xff0c;但是如果超出这个范围&#xff…

Oracle 11.2.0.1升级到11.2.0.4并做rman备份异机恢复

下载好数据库升级包&#xff0c;想去Oracle官网下载的&#xff0c;提示没有授权 只能在csdn找付费的了&#xff0c;9块1个&#xff0c;下载了前2个。 注意&#xff0c;总共有7个包&#xff0c;如果Oracle是安装在linux服务器&#xff0c;且无图形界面管理的 只需要第一&#xf…

液压传动知识

绪论 工作原理 依靠运动者的液体的压力能传递动力液体在受调节、控制状态下工作&#xff0c;液压传动和控制同等重要液压传动以液体为工作介质 液压系统组成 动力元件&#xff1a;机械能转换为液体压力能。液压泵控制元件&#xff1a;对液体流动方向、压力、流量进行控制或…

uniapp零基础入门Vue3组合式API语法版本开发咸虾米壁纸项目实战

嗨&#xff0c;大家好&#xff0c;我是爱搞知识的咸虾米。 今天给大家带来的是零基础入门uniapp&#xff0c;课程采用的是最新的Vue3组合式API版本&#xff0c;22年发布的uniappVue2版本获得了官方推荐&#xff0c;有很多同学等着我这个vue3版本的那&#xff0c;如果没有学过vu…

部署nginx服务用于浏览服务器目录并实现账号密码认证登录

1、背景&#xff1a; 因公司业务需求&#xff0c;部署一套数据库备份中心服务&#xff0c;但是因为备份的数据库很多&#xff0c;有项目经理要求能经常去查看备份数据库情况及下载备份数据文件的需求。根据该需求&#xff0c;需要在备份数据库的服务器上部署一个nginx服务&…

CentOS 7.9 快速更换 阿里云源教程

CentOS 7.9 更换源教程 总结 # 下载 wget yum -y install wget # 备份 yum 源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 下载阿里云的yum源到 /etc/yum.repos.d/ # 此处以 CentOS 7 为例&#xff0c;如果是其它版本或者系统的话&#…

【AIGC自动化编程技巧笔记】一、起步

本专栏参考了CSDN高级讲师李宁的《AIGC自动化编程技巧》&#xff0c;是学习过程中记录的笔记。 一、ChatGPT的实质 尽管ChatGPT的功能非常强大&#xff0c;看似无所不能&#xff0c;但是ChatGPT毕竟只是基于很多算法和 数据并运行在强大GPU上的大量代码而已。ChatGPT甚至并不…

js替换对象里面的对象名称

data为数组&#xff0c;val为修改前的名称&#xff0c;name为修改后的名称 JSON.parse(JSON.stringify(data).replace(/val/g, name)) &#xff1b; 1.替换data里面的对象tenantInfoRespVO名称替换成tenantInfoUpdateReqVO 2.替换语句&#xff1a; 代码可复制 let tenantInf…

基于Spring Boot的先进时尚室内管理系统

1 项目介绍 1.1 研究背景 随着21世纪信息技术革命的到来&#xff0c;互联网的普及与发展对人类社会的演变产生了深远影响&#xff0c;跨越了物质生活的丰盈边界&#xff0c;更深层次地滋养了人类的精神文化生活。在过去&#xff0c;囿于地理位置和技术条件的限制&#xff0c;…

大模型落地过程中的现状和问题——RAG技术方案

大模型有幻觉怎么办&#xff1f;&#xff1f;大模型这么多&#xff0c;怎么选&#xff1f;需要多少硬件资源支持&#xff1f;大模型有幻觉怎么办&#xff1f;&#xff1f;新技术层出不穷&#xff0c;如何跟进&#xff1f;大家都在做长文本对我有什么影响么&#xff1f; 模型微…

第十六章 标准 IP 访问控制列表配置

实验目标 理解标准 IP 访问控制列表的原理及功能&#xff1b; 掌握编号的标准 IP 访问控制列表的配置方法&#xff1b; 实验背景 你是公司的网络管理员&#xff0c;公司的经理部、财务部们和销售部门分属于不同的 3 个网段&#xff0c;三部门之间用路由器进行信息传递&…

Python容器 之 练习题

1.字符串的基本使用 # 定义一个字符串 str1, 字符串的内容为 "hello world and itcast and itheima and Python" str1 "hello world and itcast and itheima and Python" # 在字符串str1中查找 字符串 and 的下标 num str1.find(and) print(num) # 12…

MybatisPlus实现AES加密解密,实现yml配置文件中数据库连接信息如用户名,密码等信息加密解密

1 生成秘钥&#xff0c;使用AES工具生成一个随机秘钥&#xff0c;然后对用户名&#xff0c;密码加密 //数据库用户名和密码加密工具测试类 public class MpDemoApplicationTests {Testvoid contextLoads() {// 数据库用户名和密码String dbUsername"改成你的数据库连接用…

UE5 01-给子弹一个跟角色一致的向前的方向的冲量

默认Pawn 负责角色位置, 默认PlayerController 负责记录角色相机旋转

【区块链+基础设施】银联云区块链服务 | FISCO BCOS应用案例

为了顺应区块链基础设施化的发展趋势&#xff0c;中国银联推出了银联云区块链服务——UPBaaS&#xff0c;为金融行业采用区块链 技术提出了解决方案&#xff0c;微众银行为平台提供 FISCO BCOS 区块链开源技术支持。通过银联云区块链服务&#xff0c;用户可 以用可视化的方式创…