双y轴数据的展示趋于平衡
配置项如下
//调整双Y轴刻度对齐 (max,min,interval)
function _getMaxValue(arr) {
const max = Math.max(...arr);
// 这样处理是为了不让最大值刚好到坐标轴最顶部
return Math.ceil(max / 9.5) * 10;
}
const data1 = [409, 887, 948, 611, 327, 355, 560, 498, 569];
const data2 = [8447.08, 7800.11, 2843.70, 6547.90, 5170, 6569, 506, 1873, 542];
const max1 = _getMaxValue(data1),
max2 = _getMaxValue(data2);
option = {
title: {
text: '分工人员数量分布及平均工资',
left: 38,
top: 18,
textStyle: {
color: '#111',
fontWeight: 'lighter',
fontSize: 18
}
},
legend: {
data: ['分工人员数量', '平均工资'],
type: 'scroll',
top: '50',
icon: "circle",
},
//提示框
tooltip: {
trigger: 'axis',
showDelay: 0,
extraCssText: 'padding:15px;font-size:10px',
formatter: function(params) {
return params[0].name + '总数' + ' : ' + params[0].value + ' 人' + '<br/>' + params[1].name + '平均工资' + ' : ' + '¥ ' + params[1].value
},
axisPointer: {
show: true,
type: 'shadow',
}
},
// 直角坐标系内绘图网格
grid: {
left: '40',
right: '40',
top: '120',
bottom: '20',
containLabel: true
},
dataZoom: [ //给x轴设置滚动条
{
start: 0, //默认为0
end: (8 / 9) * 100, //9代表x轴data.length,8代表可展示的最大数
type: 'slider',
show: true,
xAxisIndex: [0],
handleSize: 0, //滑动条的 左右2个滑动条的大小
height: 12, //组件高度
bottom: 0, //右边的距离
handleColor: '#ddd', //h滑动图标的颜色
handleStyle: {
borderColor: "#cacaca",
borderWidth: "1",
shadowBlur: 2,
background: "#ddd",
shadowColor: "#ddd",
},
fillerColor: new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
//给颜色设置渐变色 前面4个参数,给第一个设置1,第四个设置0 ,就是水平渐变
//给第一个设置0,第四个设置1,就是垂直渐变
offset: 0,
color: '#7d90a2'
}, {
offset: 1,
color: '#4a5e70'
}]),
backgroundColor: '#efefef', //两边未选中的滑动条区域的颜色
showDataShadow: false, //是否显示数据阴影 默认auto
showDetail: false, //即拖拽时候是否显示详细数值信息 默认true
handleIcon: 'M-292,322.2c-3.2,0-6.4-0.6-9.3-1.9c-2.9-1.2-5.4-2.9-7.6-5.1s-3.9-4.8-5.1-7.6c-1.3-3-1.9-6.1-1.9-9.3c0-3.2,0.6-6.4,1.9-9.3c1.2-2.9,2.9-5.4,5.1-7.6s4.8-3.9,7.6-5.1c3-1.3,6.1-1.9,9.3-1.9c3.2,0,6.4,0.6,9.3,1.9c2.9,1.2,5.4,2.9,7.6,5.1s3.9,4.8,5.1,7.6c1.3,3,1.9,6.1,1.9,9.3c0,3.2-0.6,6.4-1.9,9.3c-1.2,2.9-2.9,5.4-5.1,7.6s-4.8,3.9-7.6,5.1C-285.6,321.5-288.8,322.2-292,322.2z',
filterMode: 'filter'
},
//下面这个属性是里面拖到
{
type: 'inside',
show: true,
xAxisIndex: [0],
start: 0, //默认为1
end: 50
},
],
calculable: true,
xAxis: [{
type: 'category',
data: ['工1', '工2', '工3', '工4', '工5', '工6', '工7', '工8', '工9'],
axisLine: {
show: false
},
axisTick: {
show: false
},
}],
//工具盒:转换折线,柱状,还原,保存
toolbox: {
show: true,
top: 10,
right: 20,
feature: {
mark: {
show: true
},
magicType: {
show: true,
type: ['line', 'bar'],
smooth: true
},
restore: {
show: true
},
saveAsImage: {
show: true
}
}
},
yAxis: [{
type: 'value',
name: '人数(人)',
axisLine: {
show: false
},
axisTick: {
show: false
},
min: 0,
max: max1,
splitNumber: 5,
interval: max1 / 5,
}, {
type: 'value',
name: '金额(元)',
axisLine: {
show: false
},
axisTick: {
show: false
},
//默认以千分位显示,不想用的可以在这加一段
axisLabel: { //调整左侧Y轴刻度, 直接按对应数据显示
show: true,
showMinLabel: true,
showMaxLabel: true,
formatter: function(value) {
return value;
}
},
splitNumber: 5,
interval: max2 / 5,
min: 0,
max: max2
}],
series: [{
name: '工种人员数量',
type: 'bar',
color: '#3e86ff',
yAxisIndex: 0,
barWidth: 20,
itemStyle: {
emphasis: {
barBorderRadius: 4
},
normal: {
barBorderRadius: 4,
}
},
data: [409, 887, 948, 611, 327, 355, 560, 498, 569]
}, {
name: '工种平均工资',
type: 'bar',
color: '#47ace7',
yAxisIndex: 1,
barWidth: 20,
itemStyle: {
emphasis: {
barBorderRadius: 4
},
normal: {
barBorderRadius: 4,
}
},
data: [8447.08, 7800.11, 2843.70, 6547.90, 5170, 6569, 506, 1873, 542],
}]
}