1. 拿到数组中的最大值和最小值
let setDataMinMaxVal = function (data) {
var obj={
"min":0,
"max":0
}
var arr=[];
for(var i=0;i<data.length;i++){
if(data[i]!='null'&&data[i]!='undefined'){
arr.push(data[i]);
}
}
arr=arr.filter(Boolean);
if (!arr.length) return obj;
let minNum = parseFloat(arr[0] || 0);
let maxNum = parseFloat(arr[0] || 0);
for (let i = 0; i <arr.length; i++) {
let e = parseFloat(arr[i] || 0);
if (Object.is(e, NaN)) {
continue;
}
//最小
if (e < minNum) {
minNum = e;
}
//最大
if (e >maxNum) {
maxNum = e;
}
}
obj.min=parseFloat(minNum);
obj.max=parseFloat(maxNum);
return obj
}
let sws = []
//获取最大最小值
// this.seriesDate1, this.seriesDate2 是要计算的两个数组
var minMaxObj = this.$filter.setDataMinMaxVal(
sws.concat(this.seriesDate1, this.seriesDate2)
);
2. 拿到最小值后计算Y轴的两个值
中间五分之四的空间来展示,上下空出,这个可以自由调节
let aMax = 0; 最大最小相减得到的值
let yMax = 0; //Y最大值
let YMin = 0; //Y最小值
aMax = parseInt((minMaxObj.max - minMaxObj.min) / 0.8); //最大最小相减得到的值
// 0.12 是顶部空出的百分比,可以调节
yMax = (minMaxObj.max + aMax * 0.12).toFixed(0); //Y最大值
// 0.08 是底部空出的百分比,可以调节
YMin = (minMaxObj.min - aMax * 0.08).toFixed(0); //Y最小值
3. 给y轴设置
yAxis: [
{
// 坐标轴单位
name: "",
type: "value",
min: YMin,
max: yMax,
// 内分割线
splitLine: {
show: true,
lineStyle: {
color: "#0E4698"
// type:'dashed'
}
},
// 刻度
axisTick: {
show: false
},
// 坐标轴字体
axisLabel: {
textStyle: {
color: "rgba(223, 238, 242, 0.80)",
fontSize: 12
}
}
},
//第二条坐标轴单独设置的
{
// 坐标轴单位
name: "",
type: "value",
// 内分割线
splitLine: {
show: false
},
// 刻度
axisTick: {
show: false
},
// 坐标轴字体
axisLabel: {
textStyle: {
color: "rgba(223, 238, 242, 0.80)",
fontSize: 12
}
},
min: function(value) {
return Math.round(value.min - (value.min / 0.8) * 0.1);
},
max: function(value) {
return Math.round(value.max + value.max * 0.12);
}
}
],