@@ -289,24 +289,10 @@ function makeSubplotData(gd) {
289289}
290290
291291function makeSubplotLayer ( plotinfo ) {
292- var plotgroup = plotinfo . plotgroup ,
293- id = plotinfo . id ;
294-
295- // Layers to keep plot types in the right order.
296- // from back to front:
297- // 1. heatmaps, 2D histos and contour maps
298- // 2. bars / 1D histos
299- // 3. errorbars for bars and scatter
300- // 4. scatter
301- // 5. box plots
302- function joinPlotLayers ( parent ) {
303- joinLayer ( parent , 'g' , 'imagelayer' ) ;
304- joinLayer ( parent , 'g' , 'maplayer' ) ;
305- joinLayer ( parent , 'g' , 'barlayer' ) ;
306- joinLayer ( parent , 'g' , 'carpetlayer' ) ;
307- joinLayer ( parent , 'g' , 'boxlayer' ) ;
308- joinLayer ( parent , 'g' , 'scatterlayer' ) ;
309- }
292+ var plotgroup = plotinfo . plotgroup ;
293+ var id = plotinfo . id ;
294+ var xLayer = constants . layerValue2layerClass [ plotinfo . xaxis . layer ] ;
295+ var yLayer = constants . layerValue2layerClass [ plotinfo . yaxis . layer ] ;
310296
311297 if ( ! plotinfo . mainplot ) {
312298 var backLayer = joinLayer ( plotgroup , 'g' , 'layer-subplot' ) ;
@@ -319,19 +305,36 @@ function makeSubplotLayer(plotinfo) {
319305 plotinfo . zerolinelayer = joinLayer ( plotgroup , 'g' , 'zerolinelayer' ) ;
320306 plotinfo . overzero = joinLayer ( plotgroup , 'g' , 'overzero' ) ;
321307
308+ joinLayer ( plotgroup , 'path' , 'xlines-below' ) ;
309+ joinLayer ( plotgroup , 'path' , 'ylines-below' ) ;
310+ plotinfo . overlinesBelow = joinLayer ( plotgroup , 'g' , 'overlines-below' ) ;
311+
312+ joinLayer ( plotgroup , 'g' , 'xaxislayer-below' ) ;
313+ joinLayer ( plotgroup , 'g' , 'yaxislayer-below' ) ;
314+ plotinfo . overaxesBelow = joinLayer ( plotgroup , 'g' , 'overaxes-below' ) ;
315+
322316 plotinfo . plot = joinLayer ( plotgroup , 'g' , 'plot' ) ;
323317 plotinfo . overplot = joinLayer ( plotgroup , 'g' , 'overplot' ) ;
324318
325- plotinfo . xlines = joinLayer ( plotgroup , 'path' , 'xlines' ) ;
326- plotinfo . ylines = joinLayer ( plotgroup , 'path' , 'ylines' ) ;
327- plotinfo . overlines = joinLayer ( plotgroup , 'g' , 'overlines' ) ;
319+ joinLayer ( plotgroup , 'path' , 'xlines-above ' ) ;
320+ joinLayer ( plotgroup , 'path' , 'ylines-above ' ) ;
321+ plotinfo . overlinesAbove = joinLayer ( plotgroup , 'g' , 'overlines-above ' ) ;
328322
329- plotinfo . xaxislayer = joinLayer ( plotgroup , 'g' , 'xaxislayer' ) ;
330- plotinfo . yaxislayer = joinLayer ( plotgroup , 'g' , 'yaxislayer' ) ;
331- plotinfo . overaxes = joinLayer ( plotgroup , 'g' , 'overaxes' ) ;
323+ joinLayer ( plotgroup , 'g' , 'xaxislayer-above' ) ;
324+ joinLayer ( plotgroup , 'g' , 'yaxislayer-above' ) ;
325+ plotinfo . overaxesAbove = joinLayer ( plotgroup , 'g' , 'overaxes-above' ) ;
326+
327+ // set refs to correct layers as determined by 'axis.layer'
328+ plotinfo . xlines = plotgroup . select ( '.xlines-' + xLayer ) ;
329+ plotinfo . ylines = plotgroup . select ( '.ylines-' + yLayer ) ;
330+ plotinfo . xaxislayer = plotgroup . select ( '.xaxislayer-' + xLayer ) ;
331+ plotinfo . yaxislayer = plotgroup . select ( '.yaxislayer-' + yLayer ) ;
332332 }
333333 else {
334334 var mainplotinfo = plotinfo . mainplotinfo ;
335+ var mainplotgroup = mainplotinfo . plotgroup ;
336+ var xId = id + '-x' ;
337+ var yId = id + '-y' ;
335338
336339 // now make the components of overlaid subplots
337340 // overlays don't have backgrounds, and append all
@@ -341,15 +344,30 @@ function makeSubplotLayer(plotinfo) {
341344 plotinfo . gridlayer = joinLayer ( mainplotinfo . overgrid , 'g' , id ) ;
342345 plotinfo . zerolinelayer = joinLayer ( mainplotinfo . overzero , 'g' , id ) ;
343346
347+ joinLayer ( mainplotinfo . overlinesBelow , 'path' , xId ) ;
348+ joinLayer ( mainplotinfo . overlinesBelow , 'path' , yId ) ;
349+ joinLayer ( mainplotinfo . overaxesBelow , 'g' , xId ) ;
350+ joinLayer ( mainplotinfo . overaxesBelow , 'g' , yId ) ;
351+
344352 plotinfo . plot = joinLayer ( mainplotinfo . overplot , 'g' , id ) ;
345- plotinfo . xlines = joinLayer ( mainplotinfo . overlines , 'path' , id + '-x' ) ;
346- plotinfo . ylines = joinLayer ( mainplotinfo . overlines , 'path' , id + '-y' ) ;
347- plotinfo . xaxislayer = joinLayer ( mainplotinfo . overaxes , 'g' , id + '-x' ) ;
348- plotinfo . yaxislayer = joinLayer ( mainplotinfo . overaxes , 'g' , id + '-y' ) ;
353+
354+ joinLayer ( mainplotinfo . overlinesAbove , 'path' , xId ) ;
355+ joinLayer ( mainplotinfo . overlinesAbove , 'path' , yId ) ;
356+ joinLayer ( mainplotinfo . overaxesAbove , 'g' , xId ) ;
357+ joinLayer ( mainplotinfo . overaxesAbove , 'g' , yId ) ;
358+
359+ // set refs to correct layers as determined by 'abovetraces'
360+ plotinfo . xlines = mainplotgroup . select ( '.overlines-' + xLayer ) . select ( '.' + xId ) ;
361+ plotinfo . ylines = mainplotgroup . select ( '.overlines-' + yLayer ) . select ( '.' + yId ) ;
362+ plotinfo . xaxislayer = mainplotgroup . select ( '.overaxes-' + xLayer ) . select ( '.' + xId ) ;
363+ plotinfo . yaxislayer = mainplotgroup . select ( '.overaxes-' + yLayer ) . select ( '.' + yId ) ;
349364 }
350365
351366 // common attributes for all subplots, overlays or not
352- plotinfo . plot . call ( joinPlotLayers ) ;
367+
368+ for ( var i = 0 ; i < constants . traceLayerClasses . length ; i ++ ) {
369+ joinLayer ( plotinfo . plot , 'g' , constants . traceLayerClasses [ i ] ) ;
370+ }
353371
354372 plotinfo . xlines
355373 . style ( 'fill' , 'none' )
0 commit comments