Skip to content

Commit 29b456e

Browse files
authored
Merge pull request #5060 from plotly/ticklabel-period-reversed
Fixup labels on reversed axes when ticklabelmode is set to period
2 parents e27fd71 + cb860ae commit 29b456e

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

src/plots/cartesian/axes.js

+15-10
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,8 @@ axes.calcTicks = function calcTicks(ax, opts) {
717717

718718
var removedPreTick0Label = false;
719719
var ticksOut = new Array(tickVals.length);
720-
for(var i = 0; i < tickVals.length; i++) {
720+
var i;
721+
for(i = 0; i < tickVals.length; i++) {
721722
var _minor = tickVals[i].minor;
722723
var _value = tickVals[i].value;
723724

@@ -745,28 +746,32 @@ axes.calcTicks = function calcTicks(ax, opts) {
745746
var B = tickVals[b].value;
746747

747748
var delta = definedDelta || Math.abs(B - A);
748-
var half = axrev ? -0.5 : 0.5;
749749
if(delta >= ONEDAY * 365) { // Years could have days less than ONEAVGYEAR period
750-
v += half * ONEAVGYEAR;
750+
v += ONEAVGYEAR / 2;
751751
} else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH period
752-
v += half * ONEAVGMONTH;
752+
v += ONEAVGMONTH / 2;
753753
} else if(delta >= ONEDAY) {
754-
v += half * ONEDAY;
754+
v += ONEDAY / 2;
755755
}
756756

757757
ticksOut[i].periodX = v;
758758

759759
if(v > maxRange || v < minRange) { // hide label if outside the range
760760
ticksOut[i].text = '';
761-
if(i === 0) removedPreTick0Label = true;
761+
removedPreTick0Label = true;
762762
}
763763
}
764764
}
765765

766-
if(removedPreTick0Label && ticksOut.length > 1) {
767-
// redo tick0 text
768-
ax._prevDateHead = '';
769-
ticksOut[1].text = axes.tickText(ax, tickVals[1].value).text;
766+
if(removedPreTick0Label) {
767+
for(i = 1; i < ticksOut.length; i++) {
768+
if(ticksOut[i].periodX <= maxRange && ticksOut[i].periodX >= minRange) {
769+
// redo first visible tick
770+
ax._prevDateHead = '';
771+
ticksOut[i].text = axes.tickText(ax, tickVals[i].value).text;
772+
break;
773+
}
774+
}
770775
}
771776

772777
ax._inCalcTicks = false;
43 Bytes
Loading

0 commit comments

Comments
 (0)