多种数据图合并
配置项如下
var unit = "%";
var color = "red";
var data = {
"caseInfo": [{
"title": "报修未达标率",
"value": [{
"type": "bar",
"item": [{
"name": "未达标回单率",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [20, 30, 40, 47, 12]
}, {
"name": "未达标率",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [24, 31, 43, 41, 13]
}]
}, {
"type": "bar",
"item": [{
"name": "未达标及思虑",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [10, 20, 44, 42, 65]
}]
}, {
"type": "bar",
"item": [{
"name": "未达标",
"id": "151518",
"xData": ["特约服务类", "投诉类", "建议类", "咨询类", "户内维修类"],
"yData": [20, 30, 40, 47, 12]
}]
}, {
"type": "bar",
"item": [{
"name": "未达标及",
"id": "151518",
"xData": ["特约服务类", "投诉类", "建议类", "咨询类", "户内维修类"],
"yData": [20, 33, 40, 47, 12]
}]
}]
}, {
"title": "投诉未达标",
"value": [{
"stack": "总量",
"type": "bar",
"item": [{
"name": "特约服务类",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [1, 12, 11, 12, 15]
}, {
"name": "投诉类",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [2, 32, 21, 22, 23]
}, {
"name": "建议类",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [12, 14, 16, 21, 24]
}, {
"name": "咨询类",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [2, 22, 13, 14, 12]
}, {
"name": "户内维修类",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [15, 3, 12, 22, 12]
}]
}, {
"stack": "总量1",
"type": "bar",
"item": [{
"name": "特约服务类1",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [1, 12, 11, 12, 15]
}, {
"name": "投诉类1",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [2, 31, 21, 22, 23]
}, {
"name": "建议类1",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [12, 14, 16, 21, 24]
}, {
"name": "咨询类1",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [2, 22, 13, 14, 12]
}, {
"name": "户内维修类1",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [15, 3, 12, 22, 12]
}]
}]
}, {
"title": "预收未达标",
"value": [{
"stack": "总量2",
"type": "bar",
"item": [{
"name": "特约服务类2",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [1, 12, 11, 12, 15]
}, {
"name": "投诉类2",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [2, 31, 21, 22, 23]
}, {
"name": "建议类2",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [12, 14, 16, 21, 24]
}, {
"name": "咨询类2",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [2, 22, 13, 14, 12]
}, {
"name": "户内维修类2",
"id": "151518",
"xData": ["项目一", "项目二", "项目三", "项目四", "项目五"],
"yData": [15, 3, 12, 22, 12]
}]
}, {
"type": "pie",
"item": [{
"name": "下一",
"value": 20,
"id": "df323df"
}, {
"name": "占比",
"value": 30,
"id": "df323df"
}, {
"name": "天天",
"value": 50,
"id": "df323df"
}, {
"name": "问我",
"value": 60,
"id": "df323df"
}, {
"name": "液体",
"value": 22,
"id": "df323df"
}, {
"name": "问我1",
"value": 33,
"id": "df323df"
}]
}, {
"type": "pie",
"item": [{
"name": "订单",
"value": 20,
"id": "df323df"
}, {
"name": "二额",
"value": 30,
"id": "df323df"
}, {
"name": "水电费",
"value": 60,
"id": "df323df"
}]
}]
}],
"projectList": [
["回单率未达标", "及时率未达标", "回单未达标", "时率未达标"],
["未关闭统计图", "不满意统计图"],
["未关闭明细", "突发事件分类统计图", "质量事故统计图"]
]
}
var title = [];
var series = [];
var subTitle = "";
var grid = [];
var xAxis = [];
var yAxis = [];
var indexOne = -1;
var legend = [];
for (var k = 0; k < data.caseInfo.length; k++) {
var L = data.caseInfo.length;
var datas = data.caseInfo[k];
var y = Math.floor(k * (100 / L));
title.push({
text: datas.title,
y: y + '%',
left: 'left',
textStyle: {
color: color
}
});
var bottom = Math.floor((100 / L) * (L - 1));
for (var index = 0; index < datas.value.length; index++) {
indexOne++
if (datas.value[index].type != "pie") {
grid.push({
top: (y + 8) + "%",
width: Math.floor(100 / datas.value.length) + "%",
left: Math.floor(100 / datas.value.length * index) + "%",
bottom: (bottom - y + 2) + "%",
containLabel: true,
textStyle: {
color: color
}
});
xAxis.push({
type: 'category',
gridIndex: indexOne,
data: datas.value[index].item[0].xData,
axisLine: {
lineStyle: {
color: color
}
},
axisLabel: {
interval: 0,
rotate: (function() {
for (var w = 0; w < datas.value[index].item[0].xData.length; w++) {
if (datas.value[index].item[0].xData[w].length > 3) {
return 30
} else {
return 0
}
}
})()
}
});
yAxis.push({
type: 'value',
gridIndex: indexOne,
axisLabel: {
formatter: '{value}' + unit
},
axisLine: {
lineStyle: {
color: color
}
},
});
for (var m = 0; m < datas.value[index].item.length; m++) {
series.push({
type: datas.value[index].type,
data: datas.value[index].item[m].yData,
stack: (function() {
if (datas.value[index].stack) {
return datas.value[index].stack;
} else {
return "";
}
})(),
name: datas.value[index].item[m].name,
xAxisIndex: indexOne,
yAxisIndex: indexOne,
label: {
normal: {
show: true,
position: (function() {
if (datas.value[index].stack) {
return "inside";
} else {
return "top";
}
})(),
formatter: (function() {
if (datas.value[index].stack) {
return '{c}';
} else {
return '{c}' + unit;
}
})(),
textStyle: {
color: color
}
}
}
});
}
// legend.push({
// width: "25%",
// type: "scroll",
// top: 5 + y + "%",
// left: Math.floor(100 / datas.value.length * index) + "%",
// data: Object.keys(datas.value[index].item).map(function(key) {
// return datas.value[index].item[key].name;
// }),
// textStyle: {
// color: color
// },
// pageTextStyle: {
// color: color
// },
// pageIconColor: color
// })
} else {
series.push({
type: datas.value[index].type,
radius: Math.floor(70 / L) - 3 + '%',
center: [Math.floor((100 / datas.value.length / 2) + (100 / datas.value.length) * index) + "%", Math.floor(y + (70 / L / 1.1)) + "%"],
data: datas.value[index].item,
label: {
normal: {
show: true,
position: 'inner',
formatter: '{c}',
textStyle: {
color: color
}
}
}
});
// legend.push({
// width: "25%",
// type: "scroll",
// top: 5 + y + "%",
// left: Math.floor(100 / datas.value.length * index) + "%",
// data: Object.keys(datas.value[index].item).map(function(key) {
// return datas.value[index].item[key].name;
// }),
// textStyle: {
// color: color
// },
// pageTextStyle: {
// color: color
// },
// pageIconColor: color
// })
}
};
subTitle += '<div style="position:absolute;top:' + (y + 2) + '%;width:100%">';
for (var x = 0; x < data.projectList[k].length; x++) {
subTitle += '<p style="color:' + color + ';float:left;text-align:center;width:' + Math.floor((100 / datas.value.length)) + '%">';
subTitle += data.projectList[k][x];
subTitle += '</p>';
}
subTitle += '</div>';
}
option = {
color: ['#d84d4d', '#4dc7d7', '#fae76a', '#ce76fc', '#fcc15b', '#77fdb9', '#77c6fd', '#d9824d', '#ffada0', '#61c219', '#4d78d8', '#0ad08c', '#fa6aaa', '#48cfab', '#ffd5bc', '#af7eff', '#ffa9e8', '#ffbb91', '#ed6a55', '#5365a2'],
textStyle: {
fontStyle: "normal",
},
tooltip: {
//trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
},
label: {
show: true,
textStyle: {
color: "#333"
}
}
},
showContent: true,
triggerOn: "mousemove"
},
// legend: legend,
grid: grid,
xAxis: xAxis,
yAxis: yAxis,
title: title,
series: series
}
$("#chart-panel").append(subTitle);