echarts饼图封装

效果图

效果

vue封装echarts饼图

<template>
<!--为echarts准备一个具备大小的容器dom-->
<div class="pie" :id="pie"  :style="{height:'100%',width:'100%'}" />
</template>
<script>
// 自行导入echarts
import echarts from 'echarts'

export default {
  name: 'pie',
  props: ['id', 'getData'],   // 满足一个页面有多个饼图,建议传入不同id
  data () {
    return {
      pie: this.id || 'pie',
      charts: ''
    }
  },
  // 实时监听父组件传过来的值,进而执行drawBar方法,重绘柱状图
  watch: {
    getData: {
      handler (value) {
        this.drawPie(value)
      },
      deep: true
    }
  },
  mounted () {
    this.drawPie()
  },
  methods: {
    drawPie ({
      opinion = [],
      nameTitle = '',
      opinionData = [],
      colorArray = []
    } = {}) {
      this.charts = echarts.init(document.getElementById(this.pie))
      this.charts.setOption({
        tooltip: {
          trigger: 'item'
        },
        legend: {
          icon: 'pin',        // 指示icon, 可以引入自定义图片
          bottom: 10,      
          left: 'center',
          itemWidth: 16,   // 指示icon大小
          itemHeight: 6,
          data: opinion
        },
        series: [
          {
            name: nameTitle,
            type: 'pie',
            radius: ['50%', '70%'], // 饼图空心
            center: ['50%', '40%'],  // 饼图占整个容器的大小
            avoidLabelOverlap: false,
            label: {
              normal: {
                show: false,
                position: 'center'
              },
              emphasis: {
                show: true,
                textStyle: {
                  fontSize: '30',
                  fontWeight: 'blod'
                }
              }
            },
            labelLine: {
              normal: {
                show: false
              }
            },
            data: opinionData,
            itemStyle: {
              normal: {
                borderWidth: 5,           // 每一个类型之间空隙
                borderColor: '#fff',
                color: function (params) {
                  const colorList = colorArray
                  return colorArray.length > 0 ? colorList[params.dataIndex] : '#EA8187'
                }
              }
            }
          }
        ]
      })
    }
  }
}
</script>

使用

<template>
    <!--性别分析 -->
      <div>
       <--宽度,高度-->
        <pie :get-data="objectData" id="agesId" style="height: 250px"></pie>
      </div>
</template>
<script>
export default {
   data ()  {
	   return {
	       objectData: {
		        opinion: ['男', '女', '未知'],
		        nameTitle: '性别',
		        opinionData: [27, 16, 1],
		        colorArray: ['#38A1F7', '#59CECE', '#5ECE7D']
     		 }
	  	 }
     }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜丶陌颜

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值