问题描述
当设置了散点图的y轴(类型为value)的boundaryGap使用留白策略时,最小值会延展至负数。
解决思路
boundaryGap原理
假设我们当前设置的boundaryGap: ["20%", "20%"]
,图中的原刻度会根据最大值和最小值进行延伸。
如图所示,这是设置留白策略之前。
设置留白策略之后
图中最值为 410 、 10,那么新的刻度范围为 [10-(410-10)*0.2, 410+(410-10)*0.2] = [-70,490] 发现最大值并未超过图表原来的刻度,所以没有延伸;但是最小值超过了最下刻度,发生了延伸。
解决方法
知道了boundaryGap的大致原理,我们现在可以结合min属性来限制最小值。
yAxis:{
boundaryGap: ["20%", "20%"],
min: function(value: any) {
if (value.min - Decimalfunc(Decimalfunc(value.max-value.min)*0.2) < 0) {
return 0;
}
return null;
}
}
Decimalfunc
为精度处理的函数,min属性可以通过函数设置,并且返回null/undefine的时候会进行自动计算最小值,并不会与boundaryGap发生冲突。至此,解决了问题。