配置项如下
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'
}
}
}
]
};