Skip to content

Commit 3baed24

Browse files
committed
revise tick positioning - fix dtick hourly - move tick0 outside the break
1 parent 1e63bfc commit 3baed24

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

src/plots/cartesian/axes.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -622,23 +622,7 @@ axes.calcTicks = function calcTicks(ax) {
622622

623623
if(ax.rangebreaks) {
624624
// replace ticks inside breaks that would get a tick
625-
if(ax.tickmode === 'auto') {
626-
for(var t = 0; t < tickVals.length; t++) {
627-
var value = tickVals[t].value;
628-
if(ax.maskBreaks(value) === BADNUM) {
629-
// find which break we are in
630-
for(var k = 0; k < ax._rangebreaks.length; k++) {
631-
var brk = ax._rangebreaks[k];
632-
if(value >= brk.min && value < brk.max) {
633-
tickVals[t].value = brk.max; // replace with break end
634-
break;
635-
}
636-
}
637-
}
638-
}
639-
}
640-
641-
// reduce ticks
625+
// and reduce ticks
642626
var len = tickVals.length;
643627
if(len > 2) {
644628
var tf2 = 2 * (ax.tickfont ? ax.tickfont.size : 12);
@@ -650,11 +634,16 @@ axes.calcTicks = function calcTicks(ax) {
650634
var first = axrev ? 0 : len - 1;
651635
var last = axrev ? len - 1 : 0;
652636
for(var q = first; dir * q <= dir * last; q += dir) { // apply reverse loop to pick greater values in breaks first
653-
var pos = ax.c2p(tickVals[q].value);
637+
var tickVal = tickVals[q];
638+
var value = tickVal.value;
639+
if(ax.maskBreaks(value) === BADNUM) {
640+
tickVal.value = moveToEndOfBreak(tickVal.value, ax);
641+
}
654642

643+
var pos = ax.c2p(tickVal.value);
655644
if(prevPos === undefined || Math.abs(pos - prevPos) > tf2) {
656645
prevPos = pos;
657-
newTickVals.push(tickVals[q]);
646+
newTickVals.push(tickVal);
658647
}
659648
}
660649
tickVals = newTickVals.reverse();
@@ -969,6 +958,10 @@ axes.tickFirst = function(ax) {
969958
var dtick = ax.dtick;
970959
var tick0 = r2l(ax.tick0);
971960

961+
if(ax.tickmode === 'auto' && ax.rangebreaks && ax.maskBreaks(tick0) === BADNUM) {
962+
tick0 = moveToEndOfBreak(tick0, ax);
963+
}
964+
972965
if(isNumeric(dtick)) {
973966
var tmin = sRound((r0 - tick0) / dtick) * dtick + tick0;
974967

@@ -3167,3 +3160,13 @@ function swapAxisAttrs(layout, key, xFullAxes, yFullAxes, dfltTitle) {
31673160
function isAngular(ax) {
31683161
return ax._id === 'angularaxis';
31693162
}
3163+
3164+
function moveToEndOfBreak(v, ax) {
3165+
for(var k = 0; k < ax._rangebreaks.length; k++) {
3166+
var brk = ax._rangebreaks[k];
3167+
if(v >= brk.min && v < brk.max) {
3168+
return brk.max;
3169+
}
3170+
}
3171+
return v;
3172+
}
-3.38 KB
Loading

0 commit comments

Comments
 (0)