@@ -634,6 +634,7 @@ axes.calcTicks = function calcTicks(ax, opts) {
634634 var definedDelta ;
635635 if ( isPeriod && tickformat ) {
636636 var noDtick = ax . _dtickInit !== ax . dtick ;
637+ var prevDtick = ax . dtick ;
637638 if (
638639 ! ( / % [ f L Q s S M X ] / . test ( tickformat ) )
639640 // %f: microseconds as a decimal number [000000, 999999]
@@ -706,11 +707,16 @@ axes.calcTicks = function calcTicks(ax, opts) {
706707 ) ax . dtick = 'M12' ;
707708 }
708709 }
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+ }
709718 }
710719
711- var maxTicks = Math . max ( 1000 , ax . _length || 0 ) ;
712- var tickVals = [ ] ;
713- var xPrevious = null ;
714720 var x = ax . _tmin ;
715721
716722 if ( ax . rangebreaks && ax . _tick0Init !== ax . tick0 ) {
@@ -726,6 +732,9 @@ axes.calcTicks = function calcTicks(ax, opts) {
726732 x = axes . tickIncrement ( x , ax . dtick , ! axrev , ax . calendar ) ;
727733 }
728734
735+ var maxTicks = Math . max ( 1000 , ax . _length || 0 ) ;
736+ var tickVals = [ ] ;
737+ var xPrevious = null ;
729738 for ( ;
730739 ( axrev ) ? ( x >= endTick ) : ( x <= endTick ) ;
731740 x = axes . tickIncrement ( x , ax . dtick , axrev , ax . calendar )
0 commit comments