@@ -2365,6 +2365,7 @@ axes.draw = function(gd, arg, opts) {
23652365 if ( plotinfo . minorGridlayer ) plotinfo . minorGridlayer . selectAll ( 'path' ) . remove ( ) ;
23662366 if ( plotinfo . gridlayer ) plotinfo . gridlayer . selectAll ( 'path' ) . remove ( ) ;
23672367 if ( plotinfo . zerolinelayer ) plotinfo . zerolinelayer . selectAll ( 'path' ) . remove ( ) ;
2368+ if ( plotinfo . zerolinelayerAbove ) plotinfo . zerolinelayerAbove . selectAll ( 'path' ) . remove ( ) ;
23682369
23692370 fullLayout . _infolayer . select ( '.g-' + xa . _id + 'title' ) . remove ( ) ;
23702371 fullLayout . _infolayer . select ( '.g-' + ya . _id + 'title' ) . remove ( ) ;
@@ -2462,6 +2463,7 @@ axes.drawOne = function(gd, ax, opts) {
24622463 var axLetter = axId . charAt ( 0 ) ;
24632464 var counterLetter = axes . counterLetter ( axId ) ;
24642465 var mainPlotinfo = fullLayout . _plots [ ax . _mainSubplot ] ;
2466+ var zerolineIsAbove = ax . zerolinelayer === 'above traces' ;
24652467
24662468 // this happens when updating matched group with 'missing' axes
24672469 if ( ! mainPlotinfo ) return ;
@@ -2576,7 +2578,7 @@ axes.drawOne = function(gd, ax, opts) {
25762578 } ) ;
25772579 axes . drawZeroLine ( gd , ax , {
25782580 counterAxis : counterAxis ,
2579- layer : plotinfo . zerolinelayer ,
2581+ layer : zerolineIsAbove ? plotinfo . zerolinelayerAbove : plotinfo . zerolinelayer ,
25802582 path : gridPath ,
25812583 transFn : transTickFn
25822584 } ) ;
@@ -3555,6 +3557,7 @@ axes.drawLabels = function(gd, ax, opts) {
35553557
35563558 var fullLayout = gd . _fullLayout ;
35573559 var axId = ax . _id ;
3560+ var zerolineIsAbove = ax . zerolinelayer === 'above traces' ;
35583561 var cls = opts . cls || axId + 'tick' ;
35593562
35603563 var vals = opts . vals . filter ( function ( d ) { return d . text ; } ) ;
@@ -3763,8 +3766,10 @@ axes.drawLabels = function(gd, ax, opts) {
37633766 var mainPlotinfo = fullLayout . _plots [ ax . _mainSubplot ] ;
37643767
37653768 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 ) ;
37683773 else if ( e . K === GRID_PATH . K ) sel = mainPlotinfo . gridlayer . selectAll ( '.' + ax . _id ) ;
37693774 else sel = mainPlotinfo [ ax . _id . charAt ( 0 ) + 'axislayer' ] ;
37703775
0 commit comments