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// }]},trendcharts: null,}},mounted () {this.$nextTick(() => {this.getEcharts()}) // 自适应窗口大小window.addEventListener('resize', () => {this.trendcharts.resize() // 趋势折线图自适应})},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)this.trendcharts = this.$echarts.init(this.$refs.trendChart)this.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/bicheng/40802.shtml

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

相关文章

2024微信小程序期末大作业-点奶茶微信小程序(后端nodejs-server)(附下载链接)_微信小程序期末大作业百度网盘下载

菜单展示 购物车展示&#xff1a; 提交订单&#xff1a; 支付详情页展示&#xff1a; 订单查看&#xff1a; 查看历史消费&#xff1a; 部分代码展示&#xff1a; <!--pages/home/home.wxml--> <block wx:for"{{listData}}" wx:key"itemlist&qu…

Python 项目依赖离线管理 pip + requirements.txt

背景 项目研发环境不支持联网&#xff0c;无法通过常规 pip install 来安装依赖&#xff0c;此时需要在联网设备下载依赖&#xff0c;然后拷贝到离线设备进行本地安装。 两台设备的操作系统、Python 版本尽可能一致。 离线安装依赖 # 在联网设备上安装项目所需的依赖 # -d …

cuda编程快速了解

原文链接 https://zhuanlan.zhihu.com/p/34587739 一、Gpu的线程结构 要深刻理解kernel&#xff0c;必须要对kernel的线程层次结构有一个清晰的认识。首先GPU上很多并行化的轻量级线程。kernel在device上执行时实际上是启动很多线程&#xff0c;一个kernel所启动的所有线程称…

2024年过半,新能源车谁在掉链子?

2024年过半之际&#xff0c;各品牌上半年的销量数据也相继出炉&#xff0c;是时候考察今年以来的表现了。 理想和鸿蒙智行两大增程霸主占据头两名&#xff0c;仍处于焦灼状态&#xff1b;极氪和蔚来作为高端纯电品牌紧随其后&#xff0c;两者之间差距很小&#xff1b;零跑和哪…

Truenas scale入坑

家里有一台刚上大学时配的电脑&#xff0c;看着无用武之地&#xff0c;又还能用&#xff0c;于是想那它来搞个私有云nas。 一、选择想要入的坑 一开始对这块没什么了解和概念&#xff0c;最早是在旧主机上安装了个Ubuntu&#xff0c;然后再安装CassOS小尝试了下。可能CassOS里…

商家转账到零钱申请必过办法详解

微信支付平台会对商家转账到零钱的申请进行严格审核&#xff0c;以确保符合相关规定和政策。但可以通过专业机构协助并遵循正确的流程来实现一次通过&#xff0c;以下是一些建议&#xff1a; 1. 确认主体资格&#xff1a;申请商家转账到零钱必须为企业主体&#xff08;有限公司…

78110A雷达信号模拟软件

78110A雷达信号模拟软件 78110A雷达信号模拟软件(简称雷达信号模拟软件)主要用于模拟产生雷达发射信号和目标回波信号&#xff0c;软件将编译生成的雷达信号任意波数据下载到信号发生器中&#xff0c;主要是1466-V矢量信号发生器&#xff0c;可实现雷达信号模拟产生。软件可模…

HDFS读写流程详细过程

HDFS读写流程详细过程 HDFS的定义一、组成架构二、优缺点三、读流程四、NameNode和SeconderyNameNode五、写流程 HDFS的定义 HDFS&#xff08;Hadoop Distributed File System&#xff09;&#xff0c;它是一个文件系统&#xff0c;用于存储文件&#xff0c;通过目录树来定位文…

opencv实现人脸检测功能----20240704

opencv实现人脸检测 早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。OpenCV 的官方版本中包含了一个更准确、基于深度学习的人脸检测器, 链接:基于深度学习…

码云项目如何弄到gitlab上面

码云项目如何弄到gitlab上面 git remote -v 可查看当前的远程仓库git remote remove origin 删除当前的远程仓库git remote add origin gitXXXX:XXXX/shares.git 添加新的远程仓库 这个是你在远程gitlab上面创建的一个空仓库的ssh 地址git remote -v 验证新的远程仓库是否添加…

C++之boost智能指针

1、boost智能指针 资源获取即初始化&#xff1a;在构造函数中对资源进行初始化&#xff0c;在析构函数中释放。 智能指针的本质思想是&#xff1a;将堆对象的生存期&#xff0c;用栈对象来管理。这个栈对象就是智能指针。 当new 一个堆对象的时候&#xff0c;立刻用智能指针…

AI免费文档处理在线工具:文档总结;论文阅读

1、文档总结 NoteGPT 支持各种类型文档ppt、word、pdf等总结 https://notegpt.io/pdf-summary 另外各种大模型工具一般都支持文档上传总结&#xff1a; 例如kimi、通义等 参考&#xff1a;https://blog.csdn.net/weixin_42357472/article/details/138205261 2、论文阅读 h…

plugin:vite:import-analysis]No known conditions for“./lib/locale/lang/zh-cn“

将原有引入&#xff1a; import zhCn from element-plus/lib/locale/lang/zh-cn 改成&#xff1a; import zhCn from element-plus/es/locale/lang/zh-cn; 原因版本升级&#xff0c;引入路径改变&#xff08;原先的包在node_modules\element-plus\lib找不到&#xff09; 新…

c++习题09-分离整数的各个数

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 二&#xff0c;思路 一开始我想到的是将简单容易输出的1000以内的数先进行相应的运算&#xff0c;再输出之后再对1000以上的数字进行判断&#xff08;主要还是想先将很大的数变小&#x…

如何自动筛选螺丝不良品?

四角螺丝是一种特殊设计的螺丝&#xff0c;其螺纹头部呈四个平行的角状结构&#xff0c;与传统的六角螺丝相比具有独特的外观和功能。这种设计使得四角螺丝在安装和拆卸时更容易使用&#xff0c;并提供了更好的扭矩传递效率。四角螺丝头部呈现四个平行的角&#xff0c;与常见的…

如何通过IP地址查询地理位置及运营商信息

在数字时代&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff0c;互联网协议地址&#xff09;已经成为我们日常网络活动的重要组成部分。每台连接到互联网的设备都被分配了一个唯一的IP地址&#xff0c;它不仅可以识别设备&#xff0c;还可以揭示设备的地理位置…

图像信号处理器(ISP)基础算法及处理流程

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

传输距离3000M|低延迟|48K采样音频传输模块-SA356大功率发射模块

无线音频应用中&#xff0c;远距离音频传输在许多领域具有广泛的应用需求&#xff0c;例如大型会议系统、公共广播、户外活动和音乐演出等。为了满足这些需求&#xff0c;音频传输模块需要具备一些关键特性&#xff0c;包括长距离传输能力、高音质、低延迟、稳定性以及抗干扰能…

fastzdp_login的第一次构建

概述 为了方便能够快捷的实现fastapi实现登录相关功能代码开发&#xff0c;决定开发一个开源的fastapi组件库&#xff0c;想了很多个名字&#xff0c;在检查pypi的时候发现都被占用了&#xff0c;所以最终决定使用fastzdp_login这个名字。 fast代表的时fastapi。zdp代表的是张…

Springboot与xxl-job

一、下载xxl-job项目 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 从GitHub上面将项目clone下来&#xff0c;如果网络问题导致速度慢也可以从Gitee上面拉…