echarts折线图动态多条线

时间:2025-01-19 11:01:09
<template> <div :ref="id" class="right"></div> </template> //以下是封装的折线图组件的js代码,只需要传入ref值和处理好格式series数组值就行 <script> props: { //传进来用来绑定ref的唯一值 id: { type: String, }, //传进来的数据 series: { type: Array, default() { return []; }, }, }, methods: { initAirtrends: function (id) {//这里就不多说,上篇文章有细说 if (!document.getElementById('airtrends')) return; this.myChart = this.$echarts.init(this.$refs[id]); this.myChart.clear() this.setairtrendsoption(); window.addEventListener("resize", () => { if (this.myChart) { this.myChart.resize(); } }); }, setairtrendsoption() { let option = { legend: {//顶部每条折线的标识的配置项 icon: "circle", // 改变它的icon circle,rect ,roundRect,triangle itemWidth:8, // 设置它的宽度 itemHeight:8, // 设置它的高度 itemGap:20, // 设置它的间距 // orient: 'vertical', //vertical是竖着显示 ,默认是横着 // left: '70%', //距离左边70%,也可用left,center,right y: '1%', //距离顶部的距离,也可以用center // textStyle:{ //icon后面的文字设置 // fontSize: 18,//字体大小 // color: '#ffffff'//字体颜色 // } }, xAxis: {//X轴配置项 type: 'category', data: this.xAxislist,//由于X轴也是动态的,我做了处理,看你需求,一般是写死的 boundaryGap: false,//数据点从边缘开始 axisLine: { show:false,//不显示坐标轴线 }, axisTick:{ show:false,//不显示X轴坐标刻度 }, // axisLabel:{//X轴的label配置项,我没有用到 // formatter: value=> { // if( == 'today'){ // return text; // }else{ // return value; // } // } // } }, grid:{//整个图例的大小,四个方向距离容器的距离,也可以用上下左右配置百分比 x:30, x2:20, y:40, y2:30, //containLabel: true }, yAxis: {//Y轴配置项 type: 'value', scale:true,//x轴刻度不从0开始,自动获取区间 //min:50,//设置最小区间,也可以设置max,如果设置了上面的scale就不生效了 }, series:this.series,//这是决定有几条线的数据,处理成你要的数据格式,也可以写死,那就是下面的写法 // [ // { // name:'图一',//每一项数据的名字,与legend关联 // data: [150, 230, 224, 218, 135, 147, 260,110, 200, 124, 118, 235, 247, 160],//具体数据 // type: 'line',//每一个点用线连接 // }, // { // name:'图二', // data: [110, 200, 124, 118, 235, 247, 160,150, 230, 224, 218, 135, 147, 260], // type: 'line' // } // ] }; this.myChart.setOption(option); }, }, watch: { //深度监听传进来的数据,只要数据变化就刷新echarts图表 series: { deep: true, handler(newVal, oldValue) { this.$nextTick(() => { this.initQuanProgress(this.id); }); }, }, }, <script>