@@ -592,6 +592,7 @@ axes.calcTicks = function calcTicks(ax, opts) {
592
592
}
593
593
594
594
var isDLog = ( ax . type === 'log' ) && ! ( isNumeric ( ax . dtick ) || ax . dtick . charAt ( 0 ) === 'L' ) ;
595
+
595
596
var tickVals ;
596
597
function generateTicks ( ) {
597
598
var xPrevious = null ;
@@ -620,13 +621,12 @@ axes.calcTicks = function calcTicks(ax, opts) {
620
621
generateTicks ( ) ;
621
622
622
623
var isPeriod = ax . ticklabelmode === 'period' ;
623
- var addOneTickToStart = isPeriod && tickVals . length > 2 ;
624
-
625
- if ( addOneTickToStart ) {
626
- tickVals . push ( {
624
+ if ( isPeriod ) {
625
+ // add one label to show pre tick0 period
626
+ tickVals = [ {
627
627
minor : false ,
628
628
value : axes . tickIncrement ( tickVals [ 0 ] . value , ax . dtick , ! axrev , ax . caldendar )
629
- } ) ;
629
+ } ] . concat ( tickVals ) ;
630
630
}
631
631
632
632
if ( ax . rangebreaks ) {
@@ -715,6 +715,7 @@ axes.calcTicks = function calcTicks(ax, opts) {
715
715
}
716
716
}
717
717
718
+ var removedPreTick0Label = false ;
718
719
var ticksOut = new Array ( tickVals . length ) ;
719
720
for ( var i = 0 ; i < tickVals . length ; i ++ ) {
720
721
var _minor = tickVals [ i ] . minor ;
@@ -732,19 +733,12 @@ axes.calcTicks = function calcTicks(ax, opts) {
732
733
733
734
var a = i ;
734
735
var b = i + 1 ;
735
- if ( addOneTickToStart ) {
736
- if ( i === tickVals . length - 1 ) {
737
- a = i ;
738
- b = 0 ;
739
- } else if ( i === tickVals . length - 2 ) {
740
- a = i - 1 ;
741
- b = i ;
742
- }
736
+ if ( i < tickVals . length - 1 ) {
737
+ a = i ;
738
+ b = i + 1 ;
743
739
} else {
744
- if ( i === tickVals . length - 1 ) {
745
- a = i - 1 ;
746
- b = i ;
747
- }
740
+ a = i - 1 ;
741
+ b = i ;
748
742
}
749
743
750
744
var A = tickVals [ a ] . value ;
@@ -763,10 +757,17 @@ axes.calcTicks = function calcTicks(ax, opts) {
763
757
764
758
if ( v > maxRange || v < minRange ) { // hide label if outside the range
765
759
ticksOut [ i ] . text = '' ;
760
+ if ( i === 0 ) removedPreTick0Label = true ;
766
761
}
767
762
}
768
763
}
769
764
765
+ if ( removedPreTick0Label && ticksOut . length > 1 ) {
766
+ // redo tick0 text
767
+ ax . _prevDateHead = '' ;
768
+ ticksOut [ 1 ] . text = axes . tickText ( ax , tickVals [ 1 ] . value ) . text ;
769
+ }
770
+
770
771
ax . _inCalcTicks = false ;
771
772
772
773
return ticksOut ;
0 commit comments