刚接了一个新需求,需要同时生成多个折线图,

例如:

 lineList 是后台请求过来的数据,为一个数组,我们循环这个数组循环调用drawLineOne方法,

 具体实现代码如下

<template v-for="(item,index) in lineList" >
   <div :key="index" :id="'myChart'+index" :style="{'height': '400px','margin-top':'20px'}"></div>
</template>
//接口请求获取的数据
this.lineList.map((item,index)=>{
  this.$nextTick(()=>{
     this.drawLineOne(item,index)
  })
})

 drawLineOne(chartData,index,){
   // 基于准备好的dom,初始化echarts实例
   let myChart = this.$echarts.init(document.getElementById('myChart'+index))
   // 绘制图表
   myChart.setOption({
    title: {
      text: '折线图堆叠'+index
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['邮件营销', '联盟广告', '视频广告', '直接访问', ]
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '邮件营销',
            type: 'line',
            stack: '总量',
            data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
            name: '联盟广告',
            type: 'line',
            stack: '总量',
            data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
            name: '视频广告',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
            name: '直接访问',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
        },
        ]
        });
    },

 注意 :需要页面加载完成才能调用drawLineOne方法,例:

this.$nextTick(()=>{
     this.drawLineOne(item,index)
  })

不然会报一下错误

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐