@@ -265,24 +265,10 @@ function makeSubplotData(gd) {
265265}
266266
267267function makeSubplotLayer ( plotinfo ) {
268- var plotgroup = plotinfo . plotgroup ,
269- id = plotinfo . id ;
270-
271- // Layers to keep plot types in the right order.
272- // from back to front:
273- // 1. heatmaps, 2D histos and contour maps
274- // 2. bars / 1D histos
275- // 3. errorbars for bars and scatter
276- // 4. scatter
277- // 5. box plots
278- function joinPlotLayers ( parent ) {
279- joinLayer ( parent , 'g' , 'imagelayer' ) ;
280- joinLayer ( parent , 'g' , 'maplayer' ) ;
281- joinLayer ( parent , 'g' , 'barlayer' ) ;
282- joinLayer ( parent , 'g' , 'carpetlayer' ) ;
283- joinLayer ( parent , 'g' , 'boxlayer' ) ;
284- joinLayer ( parent , 'g' , 'scatterlayer' ) ;
285- }
268+ var plotgroup = plotinfo . plotgroup ;
269+ var id = plotinfo . id ;
270+ var xLayer = constants . layerValue2layerClass [ plotinfo . xaxis . layer ] ;
271+ var yLayer = constants . layerValue2layerClass [ plotinfo . yaxis . layer ] ;
286272
287273 if ( ! plotinfo . mainplot ) {
288274 var backLayer = joinLayer ( plotgroup , 'g' , 'layer-subplot' ) ;
@@ -295,19 +281,36 @@ function makeSubplotLayer(plotinfo) {
295281 plotinfo . zerolinelayer = joinLayer ( plotgroup , 'g' , 'zerolinelayer' ) ;
296282 plotinfo . overzero = joinLayer ( plotgroup , 'g' , 'overzero' ) ;
297283
284+ joinLayer ( plotgroup , 'path' , 'xlines-below' ) ;
285+ joinLayer ( plotgroup , 'path' , 'ylines-below' ) ;
286+ plotinfo . overlinesBelow = joinLayer ( plotgroup , 'g' , 'overlines-below' ) ;
287+
288+ joinLayer ( plotgroup , 'g' , 'xaxislayer-below' ) ;
289+ joinLayer ( plotgroup , 'g' , 'yaxislayer-below' ) ;
290+ plotinfo . overaxesBelow = joinLayer ( plotgroup , 'g' , 'overaxes-below' ) ;
291+
298292 plotinfo . plot = joinLayer ( plotgroup , 'g' , 'plot' ) ;
299293 plotinfo . overplot = joinLayer ( plotgroup , 'g' , 'overplot' ) ;
300294
301- plotinfo . xlines = joinLayer ( plotgroup , 'path' , 'xlines' ) ;
302- plotinfo . ylines = joinLayer ( plotgroup , 'path' , 'ylines' ) ;
303- plotinfo . overlines = joinLayer ( plotgroup , 'g' , 'overlines' ) ;
295+ joinLayer ( plotgroup , 'path' , 'xlines-above ' ) ;
296+ joinLayer ( plotgroup , 'path' , 'ylines-above ' ) ;
297+ plotinfo . overlinesAbove = joinLayer ( plotgroup , 'g' , 'overlines-above ' ) ;
304298
305- plotinfo . xaxislayer = joinLayer ( plotgroup , 'g' , 'xaxislayer' ) ;
306- plotinfo . yaxislayer = joinLayer ( plotgroup , 'g' , 'yaxislayer' ) ;
307- plotinfo . overaxes = joinLayer ( plotgroup , 'g' , 'overaxes' ) ;
299+ joinLayer ( plotgroup , 'g' , 'xaxislayer-above' ) ;
300+ joinLayer ( plotgroup , 'g' , 'yaxislayer-above' ) ;
301+ plotinfo . overaxesAbove = joinLayer ( plotgroup , 'g' , 'overaxes-above' ) ;
302+
303+ // set refs to correct layers as determined by 'axis.layer'
304+ plotinfo . xlines = plotgroup . select ( '.xlines-' + xLayer ) ;
305+ plotinfo . ylines = plotgroup . select ( '.ylines-' + yLayer ) ;
306+ plotinfo . xaxislayer = plotgroup . select ( '.xaxislayer-' + xLayer ) ;
307+ plotinfo . yaxislayer = plotgroup . select ( '.yaxislayer-' + yLayer ) ;
308308 }
309309 else {
310310 var mainplotinfo = plotinfo . mainplotinfo ;
311+ var mainplotgroup = mainplotinfo . plotgroup ;
312+ var xId = id + '-x' ;
313+ var yId = id + '-y' ;
311314
312315 // now make the components of overlaid subplots
313316 // overlays don't have backgrounds, and append all
@@ -317,15 +320,30 @@ function makeSubplotLayer(plotinfo) {
317320 plotinfo . gridlayer = joinLayer ( mainplotinfo . overgrid , 'g' , id ) ;
318321 plotinfo . zerolinelayer = joinLayer ( mainplotinfo . overzero , 'g' , id ) ;
319322
323+ joinLayer ( mainplotinfo . overlinesBelow , 'path' , xId ) ;
324+ joinLayer ( mainplotinfo . overlinesBelow , 'path' , yId ) ;
325+ joinLayer ( mainplotinfo . overaxesBelow , 'g' , xId ) ;
326+ joinLayer ( mainplotinfo . overaxesBelow , 'g' , yId ) ;
327+
320328 plotinfo . plot = joinLayer ( mainplotinfo . overplot , 'g' , id ) ;
321- plotinfo . xlines = joinLayer ( mainplotinfo . overlines , 'path' , id + '-x' ) ;
322- plotinfo . ylines = joinLayer ( mainplotinfo . overlines , 'path' , id + '-y' ) ;
323- plotinfo . xaxislayer = joinLayer ( mainplotinfo . overaxes , 'g' , id + '-x' ) ;
324- plotinfo . yaxislayer = joinLayer ( mainplotinfo . overaxes , 'g' , id + '-y' ) ;
329+
330+ joinLayer ( mainplotinfo . overlinesAbove , 'path' , xId ) ;
331+ joinLayer ( mainplotinfo . overlinesAbove , 'path' , yId ) ;
332+ joinLayer ( mainplotinfo . overaxesAbove , 'g' , xId ) ;
333+ joinLayer ( mainplotinfo . overaxesAbove , 'g' , yId ) ;
334+
335+ // set refs to correct layers as determined by 'abovetraces'
336+ plotinfo . xlines = mainplotgroup . select ( '.overlines-' + xLayer ) . select ( '.' + xId ) ;
337+ plotinfo . ylines = mainplotgroup . select ( '.overlines-' + yLayer ) . select ( '.' + yId ) ;
338+ plotinfo . xaxislayer = mainplotgroup . select ( '.overaxes-' + xLayer ) . select ( '.' + xId ) ;
339+ plotinfo . yaxislayer = mainplotgroup . select ( '.overaxes-' + yLayer ) . select ( '.' + yId ) ;
325340 }
326341
327342 // common attributes for all subplots, overlays or not
328- plotinfo . plot . call ( joinPlotLayers ) ;
343+
344+ for ( var i = 0 ; i < constants . traceLayerClasses . length ; i ++ ) {
345+ joinLayer ( plotinfo . plot , 'g' , constants . traceLayerClasses [ i ] ) ;
346+ }
329347
330348 plotinfo . xlines
331349 . style ( 'fill' , 'none' )
0 commit comments