多层饼图

描述:当前是关于Echarts图表中的 饼图 示例。
 
              // 内圈饼图数据
let data1 = [
  { value: 15, name: '一', roseType: 'radius'},
  { value: 5, name: '二' },
  { value: 20, name: '三' },
  { value: 60, name: '四'}
];
// 左侧大饼图数据
let data2 = [
  { value: 40, name: '三',
    itemStyle: {
      color: 'none',
      decal: {
        symbol: 'none'
      },
      borderWidth: 0
    },
    label: {
      show: false
    }
  },
  { value: 60, name: '四' }
]
// 左侧饼图数据
let data3 = [
  { value: 70, name: '三',
    itemStyle: {
      color: 'none',
      decal: {
        symbol: 'none'
      },
      borderWidth: 0
    },
    label: {
      show: false
    }
  },
  { value: 30, name: '四', itemStyle: {color: 'lightgreen'} }
]
// 左侧小绿图数据
let data4 = [
  { value: 85, name: '三',
    itemStyle: {
      color: 'none',
      decal: {
        symbol: 'none'
      },
      borderWidth: 0
    },
    label: {
      show: false
    }
  },
  { value: 15, name: '四', itemStyle: {color: 'green'} }
]
// 顶部小蓝图数据
let data5 = [
  { value: 95, name: '三',
    itemStyle: {
      color: 'none',
      decal: {
        symbol: 'none'
      },
      borderWidth: 0
    },
    label: {
      show: false
    }
  },
  { value: 5, name: '四', itemStyle: {color: 'yellow'} }
]
// 顶部小黄图数据
let data6 = [
  { value: 80, name: '三',
    itemStyle: {
      color: 'none',
      decal: {
        symbol: 'none'
      },
      borderWidth: 0
    },
    label: {
      show: false
    }
  },
  { value: 20, name: '四', itemStyle: {color: '#19a8ed'} }
]
// 计算仪表盘开始角度与结束角度
let total = data1.map(item => item.value).reduce((acc, cur) => acc + cur);
let startAngle = 90 - 360 * (15 + 5) / total;
let endAngle = startAngle - 360;
option = {

  tooltip: {
    show: false
  },
  legend: {
    top: '5%',
    left: 'center'
  },
  title: [
    {
      show: true,
      text: '标题',
      left: 'center',
      top: '40%',
      padding: [0, 0, 10, 0],
      textStyle: {
        fontSize: 36,
      }
    },
    {
      subtext: `{value|123456\n}` + `{unit|单位}`,
      left: 'center',
      top: '46%',
      backgroundColor: '#f0f7fa',
      subtextStyle: {
        fontWeight: 'blod',
        rich: {
          value: {
            fontSize: 50,
            color: '#4373a6',
          },
          unit: {
            color: 'gray',
            fontSize: 30,
            lineHeight: 60
          }
        }
      }
    }
  ],
  series: [
    // 中心仪表盘
    {
      name: 'Pressure',
      type: 'gauge',
      clockwise: false,
      startAngle: startAngle,
      endAngle: endAngle,
      center: ['50%', '50%'],
      radius: '39.5%',
      pointer: {
        show: false
      },
      progress: {
        show: true,
        width: 12
      },
      axisLine: {
        lineStyle: {
          width: 12
        }
      },
      splitLine: {
        show: false
      },
      axisTick: {
        show: false
      },
      axisLabel: {
        show: false
      },
      detail: {
        formatter: '{value}'
      },
      data: [
        {
          value: 50,
          name: 'SCORE'
        }
      ]
    },
    // 内圈饼图
    {
      name: '蛋糕',
      type: 'pie',
      startAngle: 90,
      radius: ['40%', '60%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      labelLine: {
        show: false
      },
      data: data1
    },
    // 左侧大饼图
    {
      name: '蛋糕',
      type: 'pie',
      startAngle: 90,
      colorBy: 'data',
      radius: ['40%', '70%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderColor: 'rgba(0,0,0,.5)',
        borderWidth: 2,
        borderType: 'dashed'
      },
      label: {
        show: false,
        position: 'center'
      },
      labelLine: {
        show: false
      },
      data: data2
    },
    // 左侧饼图
    {
      name: '蛋糕',
      type: 'pie',
      startAngle: 90,
      colorBy: 'data',
      radius: ['40%', '60%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderColor: 'rgba(0,0,0,.5)',
        borderWidth: 2,
        borderType: 'dashed'
      },
      label: {
        show: false,
        position: 'center'
      },
      labelLine: {
        show: false
      },
      data: data3
    },
    // 左侧小绿图
    {
      name: '蛋糕',
      type: 'pie',
      startAngle: 90,
      colorBy: 'data',
      radius: ['43%', '50%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      labelLine: {
        show: false
      },
      data: data4
    },
    // 顶部小蓝图
    {
      name: '蛋糕',
      type: 'pie',
      clockwise: false,
      startAngle: 90,
      colorBy: 'data',
      radius: ['43%', '50%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      labelLine: {
        show: false
      },
      data: data5
    },
    // 顶部小黄图
    {
      name: '蛋糕',
      type: 'pie',
      startAngle: 72,
      colorBy: 'data',
      radius: ['40%', '43%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      labelLine: {
        show: false
      },
      data: data6
    },
  ]
}