echarts 根据时间跨度计算时间轴间隔

最最直接,也最根本的计算方法,应该是跟 平均数相关,确定要显示多少个数据,然后总的时间 / 要显示的个数,是这么的算法吧。

看到网上的另外一种方法

class CalculateScale {
  private min;
  private max;
  private maxTicks = 40;
  private tickSpacing;
  private range;
  private fitMin;
  private fitMax;

  constructor (start, end) {
    this.min = start;
    this.max = end;
    this.calculate();
  }

  getFitNumber = (range) => {
    let exponent;
    let fraction;
    let fitFraction;
    exponent = Math.floor(Math.log10(range));
    fraction = range / Math.pow(10, exponent);
    if (fraction <= 1) {
      fitFraction = 1;
    } else if (fraction <= 2) {
      fitFraction = 2;
    } else if (fraction <= 5) {
      fitFraction = 5;
    } else {
      fitFraction = 10;
    }
    return fitFraction * Math.pow(10, exponent);
  };

  calculate = () => {
    this.range = this.getFitNumber(this.max - this.min);
    this.tickSpacing = this.getFitNumber(this.range / (this.maxTicks - 1));
    this.fitMin = Math.floor(this.min / this.tickSpacing) * this.tickSpacing;
    this.fitMax = Math.ceil(this.max / this.tickSpacing) * this.tickSpacing;
  };

  setMinMaxPoint = (min, max) => {
    this.min = min;
    this.max = max;
    this.calculate();
  };

  setMaxTicks = (maxTicks) => {
    this.maxTicks = maxTicks;
    this.calculate();
  };

  getTickSpacing = () =>  {
    return this.tickSpacing;
  };

  getFitMin = () => {
    return this.fitMin;
  };

  getFitMax = () => {
    return this.fitMax;
  };
}

export default CalculateScale;

后面可以继续再想想这种方法

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 王照宁: 身为文艺委员,精通歌舞乐器,其歌喉诱人可敌汪峰,其身姿动人能胜富城。皮鞋一蹬,少女倾城。逛街、淘宝、聚餐...
    开心果_619a阅读 402评论 1 2
  • 时间:2017.9.8晚 形式:线上 议题:什么时候能遇到合适的结婚对象? 案主:啥时找到对象,啥时结婚[呲牙][...
    宓儿_2b3e阅读 323评论 0 0
  • 今天找到做妈妈的感觉了,我的奶水也来了,宝宝在吸我奶的那一刻终于有了做妈妈的感觉。 看着宝宝一天一个样子,真是惹人...
    五月沙阅读 115评论 0 1
  • 总有一种心痛不能表白 压抑的内心无法释怀 总有一种心痛不能表白 渺茫中的伤感萦绕满怀 总有一种心痛不能表白 睡梦中...
    清静斋阅读 347评论 2 7

友情链接更多精彩内容