Vue实现ECharts动态渲染多个图表,并可以联动

开局一张图

在这里插入图片描述
实现比较简单,主要是遍历时动态绑定ref,然后再遍历数据渲染就OK了
下面是全部代码

<template>
  <div>
    <div class="chart-wrap">
      <!-- 动态设置ref -->
      <div v-for="(item, index) in data" :key="index" class="chart" :ref="`chart_${index}`"></div>
    </div>
  </div>
</template>

<script>
import * as echarts from 'echarts'

export default {
  name: 'echarts',
  data () {
    return {
      data: [[
        { value: 1048, name: '语文' },
        { value: 735, name: '数学' },
        { value: 580, name: '英语' },
        { value: 484, name: '物理' },
        { value: 300, name: '化学' }
      ], [
        { value: 654, name: '语文' },
        { value: 456, name: '数学' },
        { value: 674, name: '英语' },
        { value: 563, name: '物理' },
        { value: 456, name: '化学' }
      ], [
        { value: 567, name: '语文' },
        { value: 765, name: '数学' },
        { value: 657, name: '英语' },
        { value: 456, name: '物理' },
        { value: 876, name: '化学' }
      ]],
      chartArr: []
    }
  },
  mounted () {
    this.data.forEach((item, index) => {
      const chart = echarts.init(this.$refs[`chart_${index}`][0])
      // 将实例保存到chartArr中,用于联动,如果不需要联动,这里就不需要了
      this.chartArr.push(chart)
      chart.setOption({
        tooltip: {
          trigger: 'item'
        },
        series: [
          {
            name: 'pie',
            type: 'pie',
            radius: ['40%', '70%'],
            avoidLabelOverlap: false,
            label: {
              show: true,
              position: 'inside'
            },
            data: item
          }
        ]
      })
    })
    // 图表实例实现联动
    echarts.connect(this.chartArr)
  }
}
</script>

<style lang="scss" scoped>
.chart-wrap {
  width: 1020px;
  margin: 0 auto;
  display: flex;
}
.chart {
  width: 33.3333%;
  height: 300px;
}
</style>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZionHH

落魄前端,在线炒粉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值