@@ -265,24 +265,10 @@ function makeSubplotData(gd) {
265
265
}
266
266
267
267
function 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 ] ;
286
272
287
273
if ( ! plotinfo . mainplot ) {
288
274
var backLayer = joinLayer ( plotgroup , 'g' , 'layer-subplot' ) ;
@@ -295,19 +281,36 @@ function makeSubplotLayer(plotinfo) {
295
281
plotinfo . zerolinelayer = joinLayer ( plotgroup , 'g' , 'zerolinelayer' ) ;
296
282
plotinfo . overzero = joinLayer ( plotgroup , 'g' , 'overzero' ) ;
297
283
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
+
298
292
plotinfo . plot = joinLayer ( plotgroup , 'g' , 'plot' ) ;
299
293
plotinfo . overplot = joinLayer ( plotgroup , 'g' , 'overplot' ) ;
300
294
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 ' ) ;
304
298
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 ) ;
308
308
}
309
309
else {
310
310
var mainplotinfo = plotinfo . mainplotinfo ;
311
+ var mainplotgroup = mainplotinfo . plotgroup ;
312
+ var xId = id + '-x' ;
313
+ var yId = id + '-y' ;
311
314
312
315
// now make the components of overlaid subplots
313
316
// overlays don't have backgrounds, and append all
@@ -317,15 +320,30 @@ function makeSubplotLayer(plotinfo) {
317
320
plotinfo . gridlayer = joinLayer ( mainplotinfo . overgrid , 'g' , id ) ;
318
321
plotinfo . zerolinelayer = joinLayer ( mainplotinfo . overzero , 'g' , id ) ;
319
322
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
+
320
328
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 ) ;
325
340
}
326
341
327
342
// 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
+ }
329
347
330
348
plotinfo . xlines
331
349
. style ( 'fill' , 'none' )
0 commit comments