配置项如下
var Name = ['错题率', '正确率'];
var color = ['#f18438', '#de3f0d', '#16B8FB', '#0958D2'];
var data = {
信息技术应用: [60, 40],
审计相关知识: [20, 80],
心理健康问卷调查: [90, 10],
法律法规: [95, 5],
通信网络: [50, 50],
};
var xAxisData = [];
var data1 = [],
data2 = [];
for (var i in data) {
xAxisData.push(i);
data1.push(data[i][0]);
data2.push(data[i][1]);
}
var series = [];
for (var j = 0; j < 2; j++) {
let symbolOffset = [];
let colors = [];
if (j == 0) {
symbolOffset = ['-85%', '-150%'];
colors = [color[0], color[1]];
var dataArr = data2;
var dataArr1 = data1;
var color1 = color[2];
} else if (j == 1) {
symbolOffset = ['85%', '-150%'];
colors = [color[2], color[3]];
var dataArr = data1;
var dataArr1 = data2;
var color1 = color[0];
}
series.push(
{
name: Name[j],
type: 'bar',
stack: j,
xAxisIndex: 0,
data: dataArr,
// label: label,
barWidth: 8,
barGap: 1.1,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: colors[0],
},
{
offset: 1,
color: colors[1],
},
]),
},
},
z: 3,
},
{
name: Name[j],
z: 2,
type: 'pictorialBar',
symbolPosition: 'end',
data: dataArr1,
symbol: 'rect',
symbolOffset: symbolOffset,
symbolSize: [8 * 1.2, 8 * 0.5],
itemStyle: {
normal: {
borderWidth: 0,
color: color1,
},
},
},
{
name: Name[j],
type: 'bar',
xAxisIndex: 1,
// barGap: "140%",
data: [100, 100, 100, 100, 100, 100, 100, 100],
barWidth: 12,
itemStyle: {
normal: {
color: 'rgba(3,40,94,.4)',
},
},
z: 1,
}
);
}
option = {
backgroundColor:'blurScope',
title: {
text: '错题率/正确率',
x: '36',
y: '10',
textStyle: {
fontWeight: 'normal',
fontSize: 12,
color: '#fff',
},
},
grid: {
left: '40',
right: '10',
bottom: '10',
top: '20%',
containLabel: true,
},
tooltip: {
show: 'true',
trigger: 'axis',
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
shadowStyle: {
color: 'rgba(112,112,112,0)',
},
},
// formatter: '{b}<br />{a0}: {c0}%<br />{a1}: {c1}%<br />{a2}: {c2}%',
formatter: function (params) {
var unit = params[0].name.substring(params[0].name.indexOf('(') + 1, params[0].name.indexOf(')'));
return (
params[0].name +
' :<br />' +
params[0].seriesName +
' :' +
params[0].data +
unit +
'<br />' +
// params[1].seriesName +
// " :" +
// params[1].data +
// unit +
// "<br />" +
params[2].seriesName +
' :' +
params[2].data +
unit
);
},
backgroundColor: '#005ED8', // 背景
padding: [8, 10], //内边距
extraCssText: 'box-shadow: 0 0 3px rgba(255, 255, 255, 0.4);', //添加阴影
},
legend: {
show: true,
top: 20,
right: 0,
textStyle: {
color: '#fff',
},
data: Name,
},
xAxis: [
{
type: 'category',
axisTick: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: '#393952',
},
},
axisLabel: {
inside: false,
textStyle: {
color: '#fff',
fontWeight: 'normal',
fontSize: '12',
},
formatter: function (params) {
let paramsStr = '';
params.length > 4 ? (paramsStr = params.substring(0, 4) + '...') : (paramsStr = params);
return paramsStr;
},
},
data: xAxisData,
},
{
type: 'category',
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
splitArea: {
show: false,
},
splitLine: {
show: false,
},
data: xAxisData,
},
],
yAxis: {
type: 'value',
axisTick: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: '#393952',
},
},
splitLine: {
show: false,
},
axisLabel: {
textStyle: {
color: '#909090',
fontWeight: 'normal',
fontSize: '12',
},
formatter: function (params) {
return params + '%';
},
},
},
series: series,
};