首页 > 解决方案 > Highcarts - 让日期时间 xaxis 在某个月份开始

问题描述

我有我的 xaxis 显示我想要的方式,每六个月有一个刻度间隔。我的问题是我试图让标签在三月开始。因此,我希望它显示“三月”和“九月”,而不是 xaxis 显示“一月”和“七月”。没想到这会很难,但似乎无法得到它。

xAxis: {
  type: "datetime",
  tickInterval: 1000 * 60 * 60 * 24 * 180,
  startOnTick: true,
  endOnTick: true,
  showLastLabel: true,
  labels: {
    rotation: -45,
    format: "{value:%b-%y}"
  }
},

https://jsfiddle.net/gsxwpf92/

标签: javascripthighcharts

解决方案


您将需要tickPositioner 参考 API

...
xAxis: {
  type: "datetime",
  // tickInterval: 1000 * 60 * 60 * 24 * 180, // Overrided by tickPositioner
  startOnTick: true,
  endOnTick: true,
  showLastLabel: true,
  labels: {
    rotation: -45,
    format: "{value:%b-%y}"
  },
  tickPositioner: function () {
    var positions = [],
        tick = Math.floor(this.dataMin),
        increment = 1000 * 3600 * 24 * 180; // 6 months

    for (tick; tick <= this.dataMax; tick += increment) {
      positions.push(tick);
    }
    if (positions.indexOf(this.dataMax) == -1) positions.push(this.dataMax);
    return positions;
  }
},
...

小提琴


推荐阅读