@@ -2365,6 +2365,7 @@ axes.draw = function(gd, arg, opts) {
2365
2365
if ( plotinfo . minorGridlayer ) plotinfo . minorGridlayer . selectAll ( 'path' ) . remove ( ) ;
2366
2366
if ( plotinfo . gridlayer ) plotinfo . gridlayer . selectAll ( 'path' ) . remove ( ) ;
2367
2367
if ( plotinfo . zerolinelayer ) plotinfo . zerolinelayer . selectAll ( 'path' ) . remove ( ) ;
2368
+ if ( plotinfo . zerolinelayerAbove ) plotinfo . zerolinelayerAbove . selectAll ( 'path' ) . remove ( ) ;
2368
2369
2369
2370
fullLayout . _infolayer . select ( '.g-' + xa . _id + 'title' ) . remove ( ) ;
2370
2371
fullLayout . _infolayer . select ( '.g-' + ya . _id + 'title' ) . remove ( ) ;
@@ -2462,6 +2463,7 @@ axes.drawOne = function(gd, ax, opts) {
2462
2463
var axLetter = axId . charAt ( 0 ) ;
2463
2464
var counterLetter = axes . counterLetter ( axId ) ;
2464
2465
var mainPlotinfo = fullLayout . _plots [ ax . _mainSubplot ] ;
2466
+ var zerolineIsAbove = ax . zerolinelayer === 'above traces' ;
2465
2467
2466
2468
// this happens when updating matched group with 'missing' axes
2467
2469
if ( ! mainPlotinfo ) return ;
@@ -2576,7 +2578,7 @@ axes.drawOne = function(gd, ax, opts) {
2576
2578
} ) ;
2577
2579
axes . drawZeroLine ( gd , ax , {
2578
2580
counterAxis : counterAxis ,
2579
- layer : plotinfo . zerolinelayer ,
2581
+ layer : zerolineIsAbove ? plotinfo . zerolinelayerAbove : plotinfo . zerolinelayer ,
2580
2582
path : gridPath ,
2581
2583
transFn : transTickFn
2582
2584
} ) ;
@@ -3555,6 +3557,7 @@ axes.drawLabels = function(gd, ax, opts) {
3555
3557
3556
3558
var fullLayout = gd . _fullLayout ;
3557
3559
var axId = ax . _id ;
3560
+ var zerolineIsAbove = ax . zerolinelayer === 'above traces' ;
3558
3561
var cls = opts . cls || axId + 'tick' ;
3559
3562
3560
3563
var vals = opts . vals . filter ( function ( d ) { return d . text ; } ) ;
@@ -3763,8 +3766,10 @@ axes.drawLabels = function(gd, ax, opts) {
3763
3766
var mainPlotinfo = fullLayout . _plots [ ax . _mainSubplot ] ;
3764
3767
3765
3768
var sel ;
3766
- if ( e . K === ZERO_PATH . K ) sel = mainPlotinfo . zerolinelayer . selectAll ( '.' + ax . _id + 'zl' ) ;
3767
- else if ( e . K === MINORGRID_PATH . K ) sel = mainPlotinfo . minorGridlayer . selectAll ( '.' + ax . _id ) ;
3769
+ if ( e . K === ZERO_PATH . K ) {
3770
+ var zerolineLayer = zerolineIsAbove ? mainPlotinfo . zerolinelayerAbove : mainPlotinfo . zerolinelayer ;
3771
+ sel = zerolineLayer . selectAll ( '.' + ax . _id + 'zl' ) ;
3772
+ } else if ( e . K === MINORGRID_PATH . K ) sel = mainPlotinfo . minorGridlayer . selectAll ( '.' + ax . _id ) ;
3768
3773
else if ( e . K === GRID_PATH . K ) sel = mainPlotinfo . gridlayer . selectAll ( '.' + ax . _id ) ;
3769
3774
else sel = mainPlotinfo [ ax . _id . charAt ( 0 ) + 'axislayer' ] ;
3770
3775
0 commit comments