不同等级的年龄分布

描述:当前是关于Echarts图表中的 示例。
 
              var totalData = [{
      level: "低",
      ageIndex: "30-39岁",
      value: 5546
  }, {
      level: "高",
      ageIndex: "60-69岁",
      value: 12957
  }, {
      level: "中",
      ageIndex: "60-69岁",
      value: 51984
  }, {
      level: "中",
      ageIndex: "15-19岁",
      value: 7
  }, {
      level: "低",
      ageIndex: "70-79岁",
      value: 461
  }, {
      level: "中",
      ageIndex: "70-79岁",
      value: 38182
  }, {
      level: "高",
      ageIndex: "15-19岁",
      value: 3
  }, {
      level: "中",
      ageIndex: "50-59岁",
      value: 14993
  }, {
      level: "中",
      ageIndex: "20-29岁",
      value: 185
  }, {
      level: "低",
      ageIndex: "60-69岁",
      value: 48335
  }, {
      level: "高",
      ageIndex: "40-49岁",
      value: 426
  }, {
      level: "高",
      ageIndex: "50-59岁",
      value: 3402
  }, {
      level: "中",
      ageIndex: "30-39岁",
      value: 1072
  }, {
      level: "低",
      ageIndex: "80岁以上",
      value: 9
  }, {
      level: "高",
      ageIndex: "20-29岁",
      value: 29
  }, {
      level: "中",
      ageIndex: "40-49岁",
      value: 2126
  }, {
      level: "高",
      ageIndex: "80岁以上",
      value: 14304
  }, {
      level: "低",
      ageIndex: "15-19岁",
      value: 81
  }, {
      level: "高",
      ageIndex: "30-39岁",
      value: 217
  }, {
      level: "低",
      ageIndex: "20-29岁",
      value: 939
  }, {
      level: "低",
      ageIndex: "50-59岁",
      value: 47775
  }, {
      level: "高",
      ageIndex: "70-79岁",
      value: 12111
  }, {
      level: "中",
      ageIndex: "80岁以上",
      value: 17282
  }, {
      level: "低",
      ageIndex: "40-49岁",
      value: 8341
  }]

  var orderTotalData = ['高', '中', '低']
  var riskMap = {
      high: totalData.filter(x => {
          return x.level === orderTotalData[0]
      }),
      middle: totalData.filter(x => {
          return x.level === orderTotalData[1]
      }),
      low: totalData.filter(x => {
          return x.level === orderTotalData[2]
      })
  }
  var ageGroup = ['0岁', '1-4岁', '5-9岁', '10-14岁', '15-19岁', '20-29岁', //
      '30-39岁', '40-49岁', '50-59岁', '60-69岁', '70-79岁', '80岁以上'
  ]
  var ageGroupReverse = ageGroup.slice(0).reverse()
  var riskAgeMap = {
      high: [],
      middle: [],
      low: []
  }
  ageGroupReverse.forEach(x => {
      var h = 0
      riskMap.high.forEach(item => {
          if (item.ageIndex === x) {
              h = item.value
          }
      })
      riskAgeMap.high.push(h)
      var m = 0
      riskMap.middle.forEach(item => {
          if (item.ageIndex === x) {
              m = item.value
          }
      })
      riskAgeMap.middle.push(m)
      var l = 0
      riskMap.low.forEach(item => {
          if (item.ageIndex === x) {
              l = item.value
          }
      })
      riskAgeMap.low.push(l)
  })
  var maxLst = []
  var sortDesc = function(x, y) {
      return y - x
  }
  var riskAgeMapBeforeSort = riskAgeMap
  maxLst.push(riskAgeMap.high.sort(sortDesc)[0])
  maxLst.push(riskAgeMap.middle.sort(sortDesc)[0])
  maxLst.push(riskAgeMap.low.sort(sortDesc)[0])
  var max = maxLst.sort(sortDesc)[0]

  var labelData = []
  var indicator = []
  for (var i = 0; i < ageGroup.length; ++i) {
      labelData.push({
          value: 1,
          name: ageGroup[i],
          tooltip: {
              formatter: function(params) {
                  return ''
              }
          }
      })
      indicator.push({
          name: ageGroup[i],
          max: max
      })
  }

  option = {
      title: {
          text: '不同等级的年龄分布',
          left: 'center',
          textStyle: {
              fontSize: 18,
              fontWeight: 700
          },
          zlevel: 10
      },
      tooltip: {
          trigger: 'item',
          position:['50%','20%'],
          formatter: (params) => {
              var result = ''
              var ageGroupData = [...params.value]
              var ageGroupName = [...ageGroupReverse]
              if (ageGroupData.length) {
                  result += params.name
                  ageGroupData.forEach((item, index) => {
                      result += `<br/>${ageGroupName[index]} : ${Number(item).toLocaleString()}`
                  })
              }
              return result
          }
      },
      legend: {
          data: orderTotalData,
          left: 'left',
          orient: 'vertical',
          zlevel: 10,
          selected: {
              '高': true,
              '中': false,
              '低': false
          }
      },
      radar: {
          shape: 'circle',
          scale: true,
          indicator: indicator.reverse(),
          center: ['50%', '50%'],
          radius: '60%',
          startAngle: 105,
          name: {
              show: true,
              color: 'transparent'
          },
          axisLine: {
              lineStyle: {
                  color: 'rgba(65, 217, 199, 1)',
                  opacity: 0.2
              }
          },
          splitLine: {
              lineStyle: {
                  color: 'rgba(65, 217, 199, 1)',
                  opacity: 0.2
              }
          },
          splitArea: {
              areaStyle: {
                  color: 'rgba(65, 217, 199, 0.1)',
                  opacity: 1,
                  shadowBlur: 45,
                  shadowColor: 'rgba(0,0,0,.5)',
                  shadowOffsetX: 0,
                  shadowOffsetY: 15
              }
          }
      },
      series: [{
              type: 'radar',
              data: [{
                      value: riskAgeMapBeforeSort.low,
                      name: orderTotalData[2]
                  },
                  {
                      value: riskAgeMapBeforeSort.middle,
                      name: orderTotalData[1]
                  },
                  {
                      value: riskAgeMapBeforeSort.high,
                      name: orderTotalData[0]
                  }
              ],
              zlevel: 2,
              z: 4
          },
          {
              type: 'pie',
              data: labelData,
              radius: ['65%', '85%'],
              zlevel: -1,
              name: '',
              itemStyle: {
                  normal: {
                      color: '#22C3AA',
                      borderColor: 'white'
                  }
              },
              label: {
                  normal: {
                      position: 'inside'
                  }
              }
          }
      ]
  };