@@ -674,7 +674,8 @@ axes.prepTicks = function(ax, opts) {
674
674
minPx = ax . tickfont ? Lib . bigFont ( ax . tickfont . size || 12 ) : 15 ;
675
675
nt = ax . _length / minPx ;
676
676
} else {
677
- minPx = ax . _id . charAt ( 0 ) === 'y' ? 40 : 80 ;
677
+ minPx = ax . _id . charAt ( 0 ) === 'y' ? 40 :
678
+ ax . loglabels === 'full value' ? 100 : 80 ;
678
679
nt = Lib . constrain ( ax . _length / minPx , 4 , 9 ) + 1 ;
679
680
}
680
681
@@ -1238,6 +1239,10 @@ axes.calcTicks = function calcTicks(ax, opts) {
1238
1239
return text ;
1239
1240
}
1240
1241
1242
+ var skipText1 = / ^ [ 3 4 6 7 8 9 ] / ; // for x-axis and tick length >= 3
1243
+ var skipText2 = / ^ [ 4 6 8 9 ] / ; // for tick length < 3
1244
+ var logFullValue = ax . loglabels === 'full value' && ax . dtick == 'D1' ;
1245
+
1241
1246
var t ;
1242
1247
for ( i = 0 ; i < tickVals . length ; i ++ ) {
1243
1248
var _minor = tickVals [ i ] . minor ;
@@ -1259,6 +1264,14 @@ axes.calcTicks = function calcTicks(ax, opts) {
1259
1264
hideLabel ( t ) ;
1260
1265
}
1261
1266
1267
+ if ( logFullValue && ax . _attr && (
1268
+ ( ax . _attr [ 0 ] === 'y' && t . text . match ( skipText2 ) ) ||
1269
+ ( ax . _attr [ 0 ] === 'x' && t . text . length < 3 && t . text . match ( skipText2 ) ) ||
1270
+ ( ax . _attr [ 0 ] === 'x' && t . text . length >= 3 && t . text . match ( skipText1 ) )
1271
+ ) ) {
1272
+ hideLabel ( t ) ;
1273
+ }
1274
+
1262
1275
ticksOut . push ( t ) ;
1263
1276
}
1264
1277
}
@@ -1470,11 +1483,14 @@ axes.autoTicks = function(ax, roughDTick, isMinor) {
1470
1483
Math . pow ( 10 , rng [ 0 ] ) ) / nt ;
1471
1484
base = getBase ( 10 ) ;
1472
1485
ax . dtick = 'L' + roundDTick ( roughDTick , base , roundBase10 ) ;
1486
+ ax . tickformat = '' ;
1473
1487
} else {
1474
1488
// include intermediates between powers of 10,
1475
1489
// labeled with small digits
1476
1490
// ax.dtick = "D2" (show 2 and 5) or "D1" (show all digits)
1477
- ax . dtick = ( roughDTick > 0.3 ) ? 'D2' : 'D1' ;
1491
+ ax . dtick = ( roughDTick > ( ax . loglabels === 'full value' ? 0.4 : 0.3 ) ) ? 'D2' : 'D1' ;
1492
+ ax . tickformat = '0.1s' ;
1493
+ ax . hoverformat = '0.2s' ; // workaround to fix hoverinfo label formatting
1478
1494
}
1479
1495
} else if ( ax . type === 'category' || ax . type === 'multicategory' ) {
1480
1496
ax . tick0 = 0 ;
@@ -3770,7 +3786,7 @@ axes.drawLabels = function(gd, ax, opts) {
3770
3786
3771
3787
var sel ;
3772
3788
if ( e . K === ZERO_PATH . K ) {
3773
- var zerolineLayer = zerolineIsAbove ? mainPlotinfo . zerolinelayerAbove : mainPlotinfo . zerolinelayer ;
3789
+ var zerolineLayer = zerolineIsAbove ? mainPlotinfo . zerolinelayerAbove : mainPlotinfo . zerolinelayer ;
3774
3790
sel = zerolineLayer . selectAll ( '.' + ax . _id + 'zl' ) ;
3775
3791
} else if ( e . K === MINORGRID_PATH . K ) sel = mainPlotinfo . minorGridlayer . selectAll ( '.' + ax . _id ) ;
3776
3792
else if ( e . K === GRID_PATH . K ) sel = mainPlotinfo . gridlayer . selectAll ( '.' + ax . _id ) ;
0 commit comments