echarts折线图动态多条线
<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>