饼图

描述:当前是关于Echarts图表中的 饼图 示例。
 
            const chartData = [{ name: '消防栓', value: 201 },
{ name: '烟感', value: 237 },
{ name: '喷淋', value: 209 },
{ name: '温感', value: 190 }]
let color = ['#2276FC', '#FFADC4', '#36E3E3', '#EE6F7C', '#FFCF5F', '#97D664', '#eb3eeb', '#00EE8C', '#FFCD44']
// 字段值对齐,不足补空格
let fixWithWhiteSpace = (maxLen, text, prefix = true) => {
   if (text && maxLen) {
      let num = maxLen - text.length
      return prefix && num > 0 ? Array(num + 1).join('  ') + text : text + Array(num + 1).join('   ')
   }
   return text
}
option = {
   color,
   grid: {
      left: '0%',
      right: '0%',
      bottom: '0%',
      top: '0%',
   },
   tooltip: {
      formatter: '{b0}:{c0}台',
      confine: true,
   },
   legend: {
      selectedMode: true,
      orient: 'vertical',
      top: 'center',
      left: '41%',
      itemWidth: 10,
      itemHeight: 10,
      formatter(name) { // 该函数用于设置图例显示后的百分比quanmei
         let data = chartData
         let total = 0
         let value = 0
         data.forEach((item) => {
            total += item.value
            if (item.name == name) {
               value = item.value
            }
         })
         let p = ((value / total) * 100).toFixed(1) // 求出百分比

         let maxNamelen = Math.max(...data.map(p => p.name.length))
         let maxValuelen = Math.max(...data.map(p => (p.value + '').length))
         let maxPercentageLen = Math.max(...data.map(p => ((p.value / total) * 100).toFixed(1).length))
         // 返回出图例所显示的内容是名称+百分比
         return ['{a|' + `${fixWithWhiteSpace(maxNamelen, name, false)}` + '}{b|' + `${fixWithWhiteSpace(maxValuelen, (value || 0).toString())}` + '}{b1|项}{c|' + `${fixWithWhiteSpace(maxPercentageLen, p || '0')}` + '}{c1|%' + '}']
      },
      textStyle: {
         color: '#A8CCDE',
         padding: [2, 0],
         rich: {
            b: {
               padding: [0, 2, 0, 20],
               verticalAlign: 'sub',
            },
            b1: {
               color: '#000',
            },
            c: {
               padding: [0, 2, 0, 20],
            },
            c1: {
               color: '#000',
            },
         },
      },
   },
   graphic: {
      elements: [{
         type: 'image',
         z: 4,
         style: {
            image: 'https://www.pngmart.com/files/22/Halloween-Food-PNG-Isolated-HD.png',
            width: 28,
            height: 28,
         },
         left: '21%',
         top: 'center',
      }],
   },
   series: [
      {
         name: '',
         type: 'pie',
         radius: ['38%', '44%'],
         center: ['50%', '50%'],
         hoverAnimation: false,
         avoidLabelOverlap: false,
         itemStyle: {
            borderWidth: 0,
         },
         label: {
            show: false,
            position: 'center',
         },
         labelLine: {
            show: false,
         },
         data: chartData,
         minAngle: 1,
      },
      {
         name: '',
         type: 'pie',
         radius: ['25%', '38%'],
         center: ['50%', '50%'],
         hoverAnimation: false,
         avoidLabelOverlap: false,
         label: {
            show: false,
            position: 'center',
         },
         labelLine: {
            show: false,
         },
         data: chartData,
         itemStyle: {
            borderWidth: 0,
            normal: {
               color: (data) => color[data.dataIndex] + '1D',
               borderColor: '#fff',
               borderWidth: 1,
            },
         },
         minAngle: 1,
      },
   ],
};