@@ -622,23 +622,7 @@ axes.calcTicks = function calcTicks(ax) {
622
622
623
623
if ( ax . rangebreaks ) {
624
624
// 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
642
626
var len = tickVals . length ;
643
627
if ( len > 2 ) {
644
628
var tf2 = 2 * ( ax . tickfont ? ax . tickfont . size : 12 ) ;
@@ -650,11 +634,16 @@ axes.calcTicks = function calcTicks(ax) {
650
634
var first = axrev ? 0 : len - 1 ;
651
635
var last = axrev ? len - 1 : 0 ;
652
636
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
+ }
654
642
643
+ var pos = ax . c2p ( tickVal . value ) ;
655
644
if ( prevPos === undefined || Math . abs ( pos - prevPos ) > tf2 ) {
656
645
prevPos = pos ;
657
- newTickVals . push ( tickVals [ q ] ) ;
646
+ newTickVals . push ( tickVal ) ;
658
647
}
659
648
}
660
649
tickVals = newTickVals . reverse ( ) ;
@@ -969,6 +958,10 @@ axes.tickFirst = function(ax) {
969
958
var dtick = ax . dtick ;
970
959
var tick0 = r2l ( ax . tick0 ) ;
971
960
961
+ if ( ax . tickmode === 'auto' && ax . rangebreaks && ax . maskBreaks ( tick0 ) === BADNUM ) {
962
+ tick0 = moveToEndOfBreak ( tick0 , ax ) ;
963
+ }
964
+
972
965
if ( isNumeric ( dtick ) ) {
973
966
var tmin = sRound ( ( r0 - tick0 ) / dtick ) * dtick + tick0 ;
974
967
@@ -3167,3 +3160,13 @@ function swapAxisAttrs(layout, key, xFullAxes, yFullAxes, dfltTitle) {
3167
3160
function isAngular ( ax ) {
3168
3161
return ax . _id === 'angularaxis' ;
3169
3162
}
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
+ }
0 commit comments