@@ -289,24 +289,10 @@ function makeSubplotData(gd) {
289
289
}
290
290
291
291
function 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 ] ;
310
296
311
297
if ( ! plotinfo . mainplot ) {
312
298
var backLayer = joinLayer ( plotgroup , 'g' , 'layer-subplot' ) ;
@@ -319,19 +305,36 @@ function makeSubplotLayer(plotinfo) {
319
305
plotinfo . zerolinelayer = joinLayer ( plotgroup , 'g' , 'zerolinelayer' ) ;
320
306
plotinfo . overzero = joinLayer ( plotgroup , 'g' , 'overzero' ) ;
321
307
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
+
322
316
plotinfo . plot = joinLayer ( plotgroup , 'g' , 'plot' ) ;
323
317
plotinfo . overplot = joinLayer ( plotgroup , 'g' , 'overplot' ) ;
324
318
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 ' ) ;
328
322
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 ) ;
332
332
}
333
333
else {
334
334
var mainplotinfo = plotinfo . mainplotinfo ;
335
+ var mainplotgroup = mainplotinfo . plotgroup ;
336
+ var xId = id + '-x' ;
337
+ var yId = id + '-y' ;
335
338
336
339
// now make the components of overlaid subplots
337
340
// overlays don't have backgrounds, and append all
@@ -341,15 +344,30 @@ function makeSubplotLayer(plotinfo) {
341
344
plotinfo . gridlayer = joinLayer ( mainplotinfo . overgrid , 'g' , id ) ;
342
345
plotinfo . zerolinelayer = joinLayer ( mainplotinfo . overzero , 'g' , id ) ;
343
346
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
+
344
352
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 ) ;
349
364
}
350
365
351
366
// 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
+ }
353
371
354
372
plotinfo . xlines
355
373
. style ( 'fill' , 'none' )
0 commit comments