配置项如下
let getData = [{
value: 4360,
name: '新疆金风',
itemStyle: {
color: '#fff'
}
},
{
value: 20588,
name: '江阴远景',
itemStyle: {
color: '#fff'
}
},
{
value: 2118,
name: '国电龙源',
itemStyle: {
color: '#fff'
}
},
{
value: 3512,
name: '山东中车',
itemStyle: {
color: '#fff'
}
},
{
value: 6006,
name: '浙江运达',
itemStyle: {
color: '#fff'
}
},
// {
// value: 2541,
// name: '三一重能',
// itemStyle: {
// color: '#fff'
// }
// },
// {
// value: 4336,
// name: '东方电气',
// itemStyle: {
// color: '#fff'
// }
// },
// {
// value: 1206,
// name: '中车株洲',
// itemStyle: {
// color: '#fff'
// }
// },
]
var calcData = [{
value: 2541,
name: '三一重能',
},
{
value: 4336,
name: '东方电气',
},
{
value: 1206,
name: '中车株洲',
},
]
let forceUseData = new Array(calcData.length).fill();
(function() {
let a = calcData.map(item => item.value).reduce((prev, val) => {
prev += val;
return prev;
})
// console.log(a)
let tmpData = {
value: a,
name: '合计',
itemStyle: {
color: '#fff'
}
}
getData.splice(0, 0, tmpData)
console.log(getData)
})()
option = {
grid: [ //control bar's position
{left: '60%'},
],
color: ['#f79646', '#fd79aa', '#feb63b', '#987292'], //, '#bfcfd1'],
backgroundColor: '#fff',
title: {
text: '小清新复合条饼图',
x: 'center',
y: '5%',
textStyle: {
fontSize: 30,
}
},
tooltip: {
trigger: 'item',
formatter: "{b}: {c} ({d}%)"
},
legend: {
show: true,
y: 'bottom',
data: getData.map(item => item.name)
},
// bar settings start
xAxis: {
type: 'category',
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
show: false,
margin: 20,
},
data: ['bar']
},
yAxis: {
type: 'value',
show: false
},
// bar over,
series: [{
name: '外圈',
type: 'pie',
radius: ['0%', '50%'],
center: ['35%', 'center'], //饼图位置控制
startAngle:35,
label: {
normal: {
show: true,
position: 'inside',
// distance: 40,
color: '#fff',
formatter: (params) => {
// return params.value / 100 + '%'
// return params.name + ', ' + params.value
return params.value
},
},
},
itemStyle: {
normal: {
borderWidth: 5,
borderColor: '#fff',
}
},
labelLine: {
normal: {
show: false
}
},
data: getData.map(item => {
return {
value: item.value,
name: item.name
}
})
},
{
data: [{
value: calcData[0].value,
name: calcData[0].name
}],
type: 'bar',
stack: 'one', //堆叠
barWidth: 100,
// seriesLayoutBy: 'row',
itemStyle: {
// color: '#47b9b3',
barWidth: 30,
},
label: {
show: true,
position: 'right',
distance: 20,
// borderColor: data.color,
// borderWidth: 2,
color: '#000',
// fontWeight: 'bolder',
formatter: (params) => {
// return params.name + params.value
return params.value
}
},
},
{
data: [{
value: calcData[1].value,
name: calcData[1].name
}],
type: 'bar',
stack: 'one', //堆叠
barWidth: 100,
// seriesLayoutBy: 'row',
itemStyle: {
// color: '#47b9b3',
barWidth: 30,
},
label: {
show: true,
position: 'right',
distance: 20,
// borderColor: data.color,
// borderWidth: 2,
color: '#000',
// fontWeight: 'bolder',
formatter: (params) => {
// return params.name + params.value
return params.value
}
},
},
{
data: [{
value: calcData[2].value,
name: calcData[2].name
}],
type: 'bar',
stack: 'one', //堆叠
barWidth: 100,
// seriesLayoutBy: 'row',
itemStyle: {
// color: '#47b9b3',
barWidth: 30,
},
label: {
show: true,
position: 'right',
distance: 20,
// borderColor: data.color,
// borderWidth: 2,
color: '#000',
// fontWeight: 'bolder',
formatter: (params) => {
// return params.name + params.value
return params.value
}
},
},
//bar end
]
};
myChart.setOption(option);
(function() {
var zr = myChart.getZr();
// zr.on('click', params => {
// console.log('X:' + params.offsetX + ' Y:' + params.offsetY)
// })
var line1;
line1 = new echarts.graphic.Line({
shape: {
x1: zr.getWidth() / 1.8,
y1: zr.getHeight() / 2.55,
x2: zr.getWidth() / 1.55,
y2: zr.getHeight() / 3
},
style: {
stroke: '#dbdbdb',
lineWidth: 5
}
});
line2 = new echarts.graphic.Line({
shape: {
x1: zr.getWidth() / 1.8,
y1: zr.getHeight() / 1.65,
x2: zr.getWidth() / 1.55,
y2: zr.getHeight() / 1.5
},
style: {
stroke: '#dbdbdb',
lineWidth: 5
}
});
zr.add(line1)
zr.add(line2)
})();