diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index dab9a3ce4e7..ad17fac233e 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -717,7 +717,8 @@ axes.calcTicks = function calcTicks(ax, opts) { var removedPreTick0Label = false; var ticksOut = new Array(tickVals.length); - for(var i = 0; i < tickVals.length; i++) { + var i; + for(i = 0; i < tickVals.length; i++) { var _minor = tickVals[i].minor; var _value = tickVals[i].value; @@ -745,28 +746,32 @@ axes.calcTicks = function calcTicks(ax, opts) { var B = tickVals[b].value; var delta = definedDelta || Math.abs(B - A); - var half = axrev ? -0.5 : 0.5; if(delta >= ONEDAY * 365) { // Years could have days less than ONEAVGYEAR period - v += half * ONEAVGYEAR; + v += ONEAVGYEAR / 2; } else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH period - v += half * ONEAVGMONTH; + v += ONEAVGMONTH / 2; } else if(delta >= ONEDAY) { - v += half * ONEDAY; + v += ONEDAY / 2; } ticksOut[i].periodX = v; if(v > maxRange || v < minRange) { // hide label if outside the range ticksOut[i].text = ''; - if(i === 0) removedPreTick0Label = true; + removedPreTick0Label = true; } } } - if(removedPreTick0Label && ticksOut.length > 1) { - // redo tick0 text - ax._prevDateHead = ''; - ticksOut[1].text = axes.tickText(ax, tickVals[1].value).text; + if(removedPreTick0Label) { + for(i = 1; i < ticksOut.length; i++) { + if(ticksOut[i].periodX <= maxRange && ticksOut[i].periodX >= minRange) { + // redo first visible tick + ax._prevDateHead = ''; + ticksOut[i].text = axes.tickText(ax, tickVals[i].value).text; + break; + } + } } ax._inCalcTicks = false; diff --git a/test/image/baselines/date_axes_period2.png b/test/image/baselines/date_axes_period2.png index b5ba6f837c6..c7882225fdc 100644 Binary files a/test/image/baselines/date_axes_period2.png and b/test/image/baselines/date_axes_period2.png differ