问题描述

当设置了散点图的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发生冲突。至此,解决了问题。