@@ -1228,6 +1228,19 @@ function roundDTick(roughDTick, base, roundingSet) {
1228
1228
// D1 shows all digits, D2 shows 2 and 5
1229
1229
axes . autoTicks = function ( ax , roughDTick , isMinor ) {
1230
1230
var majorDtick = ax . _majorDtick ;
1231
+ var hasMinorNtick = isMinor && ax . nticks ;
1232
+
1233
+ var mayRound = function ( roughDTick , base , roundingSet ) {
1234
+ return hasMinorNtick ?
1235
+ roughDTick :
1236
+ roundDTick ( roughDTick , base , roundingSet ) ;
1237
+ } ;
1238
+
1239
+ var mayCeil = function ( roughDTick ) {
1240
+ return hasMinorNtick ?
1241
+ roughDTick :
1242
+ Math . ceil ( roughDTick ) ;
1243
+ } ;
1231
1244
1232
1245
var base ;
1233
1246
@@ -1247,12 +1260,12 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1247
1260
if ( roughX2 > ONEAVGYEAR ) {
1248
1261
roughDTick /= ONEAVGYEAR ;
1249
1262
base = getBase ( 10 ) ;
1250
- ax . dtick = 'M' + ( 12 * roundDTick ( roughDTick , base , roundBase10 ) ) ;
1263
+ ax . dtick = 'M' + ( 12 * mayRound ( roughDTick , base , roundBase10 ) ) ;
1251
1264
} else if ( roughX2 > ONEAVGMONTH ) {
1252
1265
roughDTick /= ONEAVGMONTH ;
1253
- ax . dtick = 'M' + roundDTick ( roughDTick , 1 , roundBase24 ) ;
1266
+ ax . dtick = 'M' + mayRound ( roughDTick , 1 , roundBase24 ) ;
1254
1267
} else if ( roughX2 > ONEDAY ) {
1255
- ax . dtick = roundDTick ( roughDTick , ONEDAY , _roundDays ) ;
1268
+ ax . dtick = mayRound ( roughDTick , ONEDAY , _roundDays ) ;
1256
1269
if ( ! isMinor ) {
1257
1270
// get week ticks on sunday
1258
1271
// this will also move the base tick off 2000-01-01 if dtick is
@@ -1270,18 +1283,18 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1270
1283
if ( isPeriod ) ax . _dowTick0 = ax . tick0 ;
1271
1284
}
1272
1285
} else if ( roughX2 > ONEHOUR ) {
1273
- ax . dtick = roundDTick ( roughDTick , ONEHOUR , roundBase24 ) ;
1286
+ ax . dtick = mayRound ( roughDTick , ONEHOUR , roundBase24 ) ;
1274
1287
} else if ( roughX2 > ONEMIN ) {
1275
- ax . dtick = roundDTick ( roughDTick , ONEMIN , roundBase60 ) ;
1288
+ ax . dtick = mayRound ( roughDTick , ONEMIN , roundBase60 ) ;
1276
1289
} else if ( roughX2 > ONESEC ) {
1277
- ax . dtick = roundDTick ( roughDTick , ONESEC , roundBase60 ) ;
1290
+ ax . dtick = mayRound ( roughDTick , ONESEC , roundBase60 ) ;
1278
1291
} else {
1279
1292
// milliseconds
1280
1293
base = getBase ( 10 ) ;
1281
- ax . dtick = roundDTick ( roughDTick , base , roundBase10 ) ;
1294
+ ax . dtick = mayRound ( roughDTick , base , roundBase10 ) ;
1282
1295
}
1283
1296
1284
- if ( isMinor ) {
1297
+ if ( isMinor && ! hasMinorNtick ) {
1285
1298
if (
1286
1299
typeof majorDtick === 'string' &&
1287
1300
majorDtick . charAt ( 0 ) === 'M'
@@ -1302,9 +1315,9 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1302
1315
if ( majorDtick > ONEDAY ) {
1303
1316
if ( majorDtick === 14 * ONEDAY ) ax . dtick = 7 * ONEDAY ;
1304
1317
else {
1305
- var v = roundDTick ( majorDtick , ONEDAY , _roundDays ) ;
1318
+ var v = mayRound ( majorDtick , ONEDAY , _roundDays ) ;
1306
1319
if ( v >= majorDtick ) {
1307
- v = roundDTick ( majorDtick / 7 , ONEDAY , _roundDays ) ;
1320
+ v = mayRound ( majorDtick / 7 , ONEDAY , _roundDays ) ;
1308
1321
}
1309
1322
1310
1323
if ( ( majorDtick / ONEDAY ) % ( v / ONEDAY ) ) {
@@ -1320,7 +1333,7 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1320
1333
1321
1334
if ( roughDTick > 0.7 ) {
1322
1335
// only show powers of 10
1323
- ax . dtick = isMinor ? 1 : Math . ceil ( roughDTick ) ;
1336
+ ax . dtick = mayCeil ( roughDTick ) ;
1324
1337
} else if ( Math . abs ( rng [ 1 ] - rng [ 0 ] ) < 1 ) {
1325
1338
// span is less than one power of 10
1326
1339
var nt = 1.5 * Math . abs ( ( rng [ 1 ] - rng [ 0 ] ) / roughDTick ) ;
@@ -1329,7 +1342,7 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1329
1342
roughDTick = Math . abs ( Math . pow ( 10 , rng [ 1 ] ) -
1330
1343
Math . pow ( 10 , rng [ 0 ] ) ) / nt ;
1331
1344
base = getBase ( 10 ) ;
1332
- ax . dtick = 'L' + roundDTick ( roughDTick , base , roundBase10 ) ;
1345
+ ax . dtick = 'L' + mayRound ( roughDTick , base , roundBase10 ) ;
1333
1346
} else {
1334
1347
// include intermediates between powers of 10,
1335
1348
// labeled with small digits
@@ -1338,21 +1351,16 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1338
1351
}
1339
1352
} else if ( ax . type === 'category' || ax . type === 'multicategory' ) {
1340
1353
ax . tick0 = 0 ;
1341
- ax . dtick = Math . ceil ( Math . max ( roughDTick , 1 ) ) ;
1354
+ ax . dtick = mayCeil ( Math . max ( roughDTick , 1 ) ) ;
1342
1355
} else if ( isAngular ( ax ) ) {
1343
1356
ax . tick0 = 0 ;
1344
1357
base = 1 ;
1345
- ax . dtick = roundDTick ( roughDTick , base , roundAngles ) ;
1358
+ ax . dtick = mayRound ( roughDTick , base , roundAngles ) ;
1346
1359
} else {
1347
1360
// auto ticks always start at 0
1348
1361
ax . tick0 = 0 ;
1349
- if ( isMinor && ax . nticks ) {
1350
- // do not round when minor has nticks in this case
1351
- ax . dtick = roughDTick ;
1352
- } else {
1353
- base = getBase ( 10 ) ;
1354
- ax . dtick = roundDTick ( roughDTick , base , roundBase10 ) ;
1355
- }
1362
+ base = getBase ( 10 ) ;
1363
+ ax . dtick = mayRound ( roughDTick , base , roundBase10 ) ;
1356
1364
}
1357
1365
1358
1366
// prevent infinite loops
0 commit comments