Skip to content

Commit 1cec0bc

Browse files
committed
do not try to round dtick when having minor.nticks
1 parent bae4f11 commit 1cec0bc

File tree

1 file changed

+29
-21
lines changed

1 file changed

+29
-21
lines changed

src/plots/cartesian/axes.js

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,6 +1228,19 @@ function roundDTick(roughDTick, base, roundingSet) {
12281228
// D1 shows all digits, D2 shows 2 and 5
12291229
axes.autoTicks = function(ax, roughDTick, isMinor) {
12301230
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+
};
12311244

12321245
var base;
12331246

@@ -1247,12 +1260,12 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
12471260
if(roughX2 > ONEAVGYEAR) {
12481261
roughDTick /= ONEAVGYEAR;
12491262
base = getBase(10);
1250-
ax.dtick = 'M' + (12 * roundDTick(roughDTick, base, roundBase10));
1263+
ax.dtick = 'M' + (12 * mayRound(roughDTick, base, roundBase10));
12511264
} else if(roughX2 > ONEAVGMONTH) {
12521265
roughDTick /= ONEAVGMONTH;
1253-
ax.dtick = 'M' + roundDTick(roughDTick, 1, roundBase24);
1266+
ax.dtick = 'M' + mayRound(roughDTick, 1, roundBase24);
12541267
} else if(roughX2 > ONEDAY) {
1255-
ax.dtick = roundDTick(roughDTick, ONEDAY, _roundDays);
1268+
ax.dtick = mayRound(roughDTick, ONEDAY, _roundDays);
12561269
if(!isMinor) {
12571270
// get week ticks on sunday
12581271
// this will also move the base tick off 2000-01-01 if dtick is
@@ -1270,18 +1283,18 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
12701283
if(isPeriod) ax._dowTick0 = ax.tick0;
12711284
}
12721285
} else if(roughX2 > ONEHOUR) {
1273-
ax.dtick = roundDTick(roughDTick, ONEHOUR, roundBase24);
1286+
ax.dtick = mayRound(roughDTick, ONEHOUR, roundBase24);
12741287
} else if(roughX2 > ONEMIN) {
1275-
ax.dtick = roundDTick(roughDTick, ONEMIN, roundBase60);
1288+
ax.dtick = mayRound(roughDTick, ONEMIN, roundBase60);
12761289
} else if(roughX2 > ONESEC) {
1277-
ax.dtick = roundDTick(roughDTick, ONESEC, roundBase60);
1290+
ax.dtick = mayRound(roughDTick, ONESEC, roundBase60);
12781291
} else {
12791292
// milliseconds
12801293
base = getBase(10);
1281-
ax.dtick = roundDTick(roughDTick, base, roundBase10);
1294+
ax.dtick = mayRound(roughDTick, base, roundBase10);
12821295
}
12831296

1284-
if(isMinor) {
1297+
if(isMinor && !hasMinorNtick) {
12851298
if(
12861299
typeof majorDtick === 'string' &&
12871300
majorDtick.charAt(0) === 'M'
@@ -1302,9 +1315,9 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
13021315
if(majorDtick > ONEDAY) {
13031316
if(majorDtick === 14 * ONEDAY) ax.dtick = 7 * ONEDAY;
13041317
else {
1305-
var v = roundDTick(majorDtick, ONEDAY, _roundDays);
1318+
var v = mayRound(majorDtick, ONEDAY, _roundDays);
13061319
if(v >= majorDtick) {
1307-
v = roundDTick(majorDtick / 7, ONEDAY, _roundDays);
1320+
v = mayRound(majorDtick / 7, ONEDAY, _roundDays);
13081321
}
13091322

13101323
if((majorDtick / ONEDAY) % (v / ONEDAY)) {
@@ -1320,7 +1333,7 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
13201333

13211334
if(roughDTick > 0.7) {
13221335
// only show powers of 10
1323-
ax.dtick = isMinor ? 1 : Math.ceil(roughDTick);
1336+
ax.dtick = mayCeil(roughDTick);
13241337
} else if(Math.abs(rng[1] - rng[0]) < 1) {
13251338
// span is less than one power of 10
13261339
var nt = 1.5 * Math.abs((rng[1] - rng[0]) / roughDTick);
@@ -1329,7 +1342,7 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
13291342
roughDTick = Math.abs(Math.pow(10, rng[1]) -
13301343
Math.pow(10, rng[0])) / nt;
13311344
base = getBase(10);
1332-
ax.dtick = 'L' + roundDTick(roughDTick, base, roundBase10);
1345+
ax.dtick = 'L' + mayRound(roughDTick, base, roundBase10);
13331346
} else {
13341347
// include intermediates between powers of 10,
13351348
// labeled with small digits
@@ -1338,21 +1351,16 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
13381351
}
13391352
} else if(ax.type === 'category' || ax.type === 'multicategory') {
13401353
ax.tick0 = 0;
1341-
ax.dtick = Math.ceil(Math.max(roughDTick, 1));
1354+
ax.dtick = mayCeil(Math.max(roughDTick, 1));
13421355
} else if(isAngular(ax)) {
13431356
ax.tick0 = 0;
13441357
base = 1;
1345-
ax.dtick = roundDTick(roughDTick, base, roundAngles);
1358+
ax.dtick = mayRound(roughDTick, base, roundAngles);
13461359
} else {
13471360
// auto ticks always start at 0
13481361
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);
13561364
}
13571365

13581366
// prevent infinite loops

0 commit comments

Comments
 (0)