配置项如下
//以下为测试数据,实际开发中肯定要从后台获取。
//x轴月份
var months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
//单位数组
var dwArr = [23, 27, 28, 30, 34, 36, 39, 41, 45, 46, 56, 60];
//职工数组
var zgArr = [1500, 1700, 1750, 1800, 1850, 1900, 1910, 1941, 1980, 2000, 2100, 2200];
//金额数组
var jeArr = [3500, 3600, 4200, 4800, 5500, 6500, 4900, 3500, 5400, 5500, 6500, 7000];
var colors = ['#FD2446', '#248EFD', '#C916F2', '#6669B1']; //自定义一个颜色数组,多系时会按照顺序使用自己定义的颜色数组,若不定义则使用默认的颜色数组
// 指定图表的配置项和数据
var option = {
color: colors,
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data: ['销量']
},
xAxis: {
data: months
},
yAxis: {},
toolbox: {
show: true,
orient: 'horizontal',
showTitle: true,
feature: {
magicType: {
type: ['line', 'bar']
},
dataView: {
show: true,
title: '某地区单位人数金额统计',
readOnly: false,
optionToContent: function(opt) {
var colName = "序号";
var typeName = "月份";
var dataview = opt.toolbox[0].feature.dataView; //获取dataview
var table = '<div style="position:absolute;top: 5px;left: 0px;right: 0px;line-height: 1.4em;text-align:center;font-size:14px;">' + dataview.title + '</div>'
table += getTable(opt, colName, typeName);
return table;
}
},
saveAsImage: {
type: 'png',
show: true,
title: '保存为图片',
},
restore: {
show: true
}
}
},
series: [{
name: '单位数',
type: 'bar',
barMaxWidth: '20%',
label: {
normal: {
show: true,
position: 'top'
}
},
data: dwArr
},
{
name: '职工数',
type: 'bar',
barMaxWidth: '20%',
label: {
normal: {
show: true,
position: 'top'
}
},
data: zgArr
},
{
name: '平均工资',
type: 'bar',
barMaxWidth: '20%',
label: {
normal: {
show: true,
position: 'top'
}
},
data: jeArr
}
]
};
function getTable(opt, colName, typeName) {
var axisData = opt.xAxis[0].data; //获取图形的data数组
var series = opt.series; //获取series
var num = 0; //记录序号
var sum = new Array(); //获取合计数组(根据对应的系数生成相应数量的sum)
for (var i = 0; i < series.length; i++) {
sum[i] = 0;
}
var table = '<div><table class="bordered"><thead><tr>' +
'<th>' + colName + '</th>' +
'<th>' + typeName + '</th>';
for (var i = 0; i < series.length; i++) {
table += '<th>' + series[i].name + '</th>'
}
table += '</tr></thead><tbody>';
for (var i = 0, l = axisData.length; i < l; i++) {
num += 1;
for (var n = 0; n < series.length; n++) {
if (series[n].data[i]) {
sum[n] += Number(series[n].data[i]);
} else {
sum[n] += Number(0);
}
}
table += '<tr>' +
'<td>' + num + '</td>' +
'<td>' + axisData[i] + '</td>';
for (var j = 0; j < series.length; j++) {
if (series[j].data[i]) {
table += '<td>' + series[j].data[i] + '</td>';
} else {
table += '<td>' + 0 + '</td>';
}
}
table += '</tr>';
}
//最后一行加上合计
table += '<tr>' + '<td>' + (num + 1) + '</td>' + '<td>合计</td>';
for (var n = 0; n < series.length; n++) {
if (String(sum[n]).indexOf(".") > -1)
table += '<td>' + (Number(sum[n])).toFixed(2) + '</td>';
else
table += '<td>' + Number(sum[n]) + '</td>';
}
table += '</tr></tbody></table></div>';
return table;
}