@@ -634,6 +634,7 @@ axes.calcTicks = function calcTicks(ax, opts) {
634
634
var definedDelta ;
635
635
if ( isPeriod && tickformat ) {
636
636
var noDtick = ax . _dtickInit !== ax . dtick ;
637
+ var prevDtick = ax . dtick ;
637
638
if (
638
639
! ( / % [ f L Q s S M X ] / . test ( tickformat ) )
639
640
// %f: microseconds as a decimal number [000000, 999999]
@@ -706,11 +707,16 @@ axes.calcTicks = function calcTicks(ax, opts) {
706
707
) ax . dtick = 'M12' ;
707
708
}
708
709
}
710
+
711
+ if ( prevDtick !== ax . dtick ) {
712
+ // move tick0 back
713
+ ax . tick0 = axes . tickIncrement ( ax . tick0 , prevDtick , ! axrev , ax . calendar ) ;
714
+
715
+ // redo first tick
716
+ ax . _tmin = axes . tickFirst ( ax , opts ) ;
717
+ }
709
718
}
710
719
711
- var maxTicks = Math . max ( 1000 , ax . _length || 0 ) ;
712
- var tickVals = [ ] ;
713
- var xPrevious = null ;
714
720
var x = ax . _tmin ;
715
721
716
722
if ( ax . rangebreaks && ax . _tick0Init !== ax . tick0 ) {
@@ -726,6 +732,9 @@ axes.calcTicks = function calcTicks(ax, opts) {
726
732
x = axes . tickIncrement ( x , ax . dtick , ! axrev , ax . calendar ) ;
727
733
}
728
734
735
+ var maxTicks = Math . max ( 1000 , ax . _length || 0 ) ;
736
+ var tickVals = [ ] ;
737
+ var xPrevious = null ;
729
738
for ( ;
730
739
( axrev ) ? ( x >= endTick ) : ( x <= endTick ) ;
731
740
x = axes . tickIncrement ( x , ax . dtick , axrev , ax . calendar )
0 commit comments