@@ -540,8 +540,27 @@ function autoShiftMonthBins(binStart, data, dtick, dataMin, calendar) {
540
540
// Ticks and grids
541
541
// ----------------------------------------------------
542
542
543
+ // ensure we have minor tick0 and dtick calculated
544
+ axes . prepMinorTicks = function ( ax , opts ) {
545
+ var rng = Lib . simpleMap ( ax . range , ax . r2l , undefined , undefined , opts ) ;
546
+
547
+ // calculate max number of (auto) ticks to display based on plot size
548
+ if ( ax . tickmode === 'auto' || ! ax . dtick ) {
549
+ var nt = ax . nticks ;
550
+ var minPx ;
551
+
552
+ if ( ! nt ) {
553
+ minPx = ax . _id . charAt ( 0 ) === 'y' ? 40 : 80 ;
554
+ nt = Lib . constrain ( ax . _length / minPx , 4 , 9 ) + 1 ;
555
+ }
556
+
557
+ ax . _roughDTick = Math . abs ( rng [ 1 ] - rng [ 0 ] ) / nt ;
558
+ axes . autoTicks ( ax , ax . _roughDTick , 'minor' ) ;
559
+ }
560
+ } ;
561
+
543
562
// ensure we have tick0, dtick, and tick rounding calculated
544
- axes . prepTicks = function ( ax , opts , isMinor ) {
563
+ axes . prepTicks = function ( ax , opts ) {
545
564
var rng = Lib . simpleMap ( ax . range , ax . r2l , undefined , undefined , opts ) ;
546
565
547
566
// calculate max number of (auto) ticks to display based on plot size
@@ -565,11 +584,11 @@ axes.prepTicks = function(ax, opts, isMinor) {
565
584
566
585
// add a couple of extra digits for filling in ticks when we
567
586
// have explicit tickvals without tick text
568
- if ( ax . tickmode === 'array' && ! isMinor ) nt *= 100 ;
587
+ if ( ax . tickmode === 'array' ) nt *= 100 ;
569
588
570
589
571
590
ax . _roughDTick = Math . abs ( rng [ 1 ] - rng [ 0 ] ) / nt ;
572
- axes . autoTicks ( ax , ax . _roughDTick , isMinor ) ;
591
+ axes . autoTicks ( ax , ax . _roughDTick ) ;
573
592
574
593
// check for a forced minimum dtick
575
594
if ( ax . _minDtick > 0 && ax . dtick < ax . _minDtick * 2 ) {
@@ -578,7 +597,7 @@ axes.prepTicks = function(ax, opts, isMinor) {
578
597
}
579
598
}
580
599
581
- if ( ax . ticklabelmode === 'period' && ! isMinor ) {
600
+ if ( ax . ticklabelmode === 'period' ) {
582
601
adjustPeriodDelta ( ax ) ;
583
602
}
584
603
@@ -592,7 +611,7 @@ axes.prepTicks = function(ax, opts, isMinor) {
592
611
if ( ax . type === 'date' && ax . dtick < 0.1 ) ax . dtick = 0.1 ;
593
612
594
613
// now figure out rounding of tick values
595
- if ( ! isMinor ) autoTickRound ( ax ) ;
614
+ autoTickRound ( ax ) ;
596
615
} ;
597
616
598
617
function nMonths ( dtick ) {
@@ -827,7 +846,11 @@ axes.calcTicks = function calcTicks(ax, opts) {
827
846
}
828
847
}
829
848
830
- axes . prepTicks ( mockAx , opts , isMinor ) ;
849
+ if ( isMinor ) {
850
+ axes . prepMinorTicks ( mockAx , opts ) ;
851
+ } else {
852
+ axes . prepTicks ( mockAx , opts ) ;
853
+ }
831
854
832
855
// now that we've figured out the auto values for formatting
833
856
// in case we're missing some ticktext, we can break out for array ticks
0 commit comments