echarts多轴求最大公约数

Scroll Down

echarts多轴求最大公约数并间隔相同不出现横线错位


/*
* @description echarts专用求最大公约数 不含小数
* */
export function chartlcm(a: number, b: number) {
  let result = 1;
  for (let i = 1; i <= a && i <= b; i++) {

    if (a % i == 0 && b % i == 0) {
      result = i;
    }
    if (result > 1 && i >= 10)//公约数大于10的时候 直接跳出 避免y轴刻度太多  (如果不介意刻度太多可以把这一段去掉)
      break;
  }
  return result;
}

/*
* @description 获取echarts  多Y轴的最大值和间隔值
* @param { number } m - Y轴1的最大值
* @param { number } n - Y轴2的最大值
* @param { number } lcmval - 最大公约数
* @param { number } divisor - 间隔数量
* */
export function YmaxvalAndinterval(m: number, n: number, lcmval: number, divisor: number) {

  let interval1 = Math.ceil(m / lcmval);
  let interval2 = Math.ceil(n / lcmval);

  if (lcmval != 1 && lcmval != 0 && lcmval <= 10) {
    return {max1: m, max2: n, interval1: interval1, interval2: interval2};
  }

  if (divisor == undefined)
    divisor = 5;

  //var mval = m % divisor;
  //if (mval > 0) {
  //    m = ((m - mval) / divisor + 1) * divisor
  //}
  m = Math.ceil(m / divisor) * divisor;

  n = Math.ceil(n / divisor) * divisor;

  interval1 = Math.ceil(m / divisor);

  interval2 = Math.ceil(n / divisor);

  return {max1: m, max2: n, interval1: interval1, interval2: interval2};

}