@@ -75,7 +75,7 @@ function setGroupPositions(gd, pa, sa, calcTraces, opts) {
75
75
76
76
switch ( opts . mode ) {
77
77
case 'overlay' :
78
- setGroupPositionsInOverlayMode ( pa , sa , calcTraces , opts ) ;
78
+ setGroupPositionsInOverlayMode ( gd , pa , sa , calcTraces , opts ) ;
79
79
break ;
80
80
81
81
case 'group' :
@@ -94,7 +94,7 @@ function setGroupPositions(gd, pa, sa, calcTraces, opts) {
94
94
setGroupPositionsInGroupMode ( gd , pa , sa , included , opts ) ;
95
95
}
96
96
if ( excluded . length ) {
97
- setGroupPositionsInOverlayMode ( pa , sa , excluded , opts ) ;
97
+ setGroupPositionsInOverlayMode ( gd , pa , sa , excluded , opts ) ;
98
98
}
99
99
break ;
100
100
@@ -119,7 +119,7 @@ function setGroupPositions(gd, pa, sa, calcTraces, opts) {
119
119
setGroupPositionsInStackOrRelativeMode ( gd , pa , sa , included , opts ) ;
120
120
}
121
121
if ( excluded . length ) {
122
- setGroupPositionsInOverlayMode ( pa , sa , excluded , opts ) ;
122
+ setGroupPositionsInOverlayMode ( gd , pa , sa , excluded , opts ) ;
123
123
}
124
124
break ;
125
125
}
@@ -217,7 +217,7 @@ function initBase(sa, calcTraces) {
217
217
}
218
218
}
219
219
220
- function setGroupPositionsInOverlayMode ( pa , sa , calcTraces , opts ) {
220
+ function setGroupPositionsInOverlayMode ( gd , pa , sa , calcTraces , opts ) {
221
221
// update position axis and set bar offsets and widths
222
222
for ( var i = 0 ; i < calcTraces . length ; i ++ ) {
223
223
var calcTrace = calcTraces [ i ] ;
@@ -229,7 +229,7 @@ function setGroupPositionsInOverlayMode(pa, sa, calcTraces, opts) {
229
229
} ) ;
230
230
231
231
// set bar offsets and widths, and update position axis
232
- setOffsetAndWidth ( pa , sieve , opts ) ;
232
+ setOffsetAndWidth ( gd , pa , sieve , opts ) ;
233
233
234
234
// set bar bases and sizes, and update size axis
235
235
//
@@ -253,7 +253,7 @@ function setGroupPositionsInGroupMode(gd, pa, sa, calcTraces, opts) {
253
253
} ) ;
254
254
255
255
// set bar offsets and widths, and update position axis
256
- setOffsetAndWidthInGroupMode ( gd , pa , sieve , opts ) ;
256
+ setOffsetAndWidth ( gd , pa , sieve , opts ) ;
257
257
258
258
// relative-stack bars within the same trace that would otherwise
259
259
// be hidden
@@ -276,7 +276,7 @@ function setGroupPositionsInStackOrRelativeMode(gd, pa, sa, calcTraces, opts) {
276
276
} ) ;
277
277
278
278
// set bar offsets and widths, and update position axis
279
- setOffsetAndWidth ( pa , sieve , opts ) ;
279
+ setOffsetAndWidth ( gd , pa , sieve , opts ) ;
280
280
281
281
// set bar bases and sizes, and update size axis
282
282
stackBars ( sa , sieve , opts ) ;
@@ -300,43 +300,7 @@ function setGroupPositionsInStackOrRelativeMode(gd, pa, sa, calcTraces, opts) {
300
300
if ( opts . norm ) normalizeBars ( sa , sieve , opts ) ;
301
301
}
302
302
303
- function setOffsetAndWidth ( pa , sieve , opts ) {
304
- var minDiff = sieve . minDiff ;
305
- var calcTraces = sieve . traces ;
306
-
307
- // set bar offsets and widths
308
- var barGroupWidth = minDiff * ( 1 - opts . gap ) ;
309
- var barWidthPlusGap = barGroupWidth ;
310
- var barWidth = barWidthPlusGap * ( 1 - ( opts . groupgap || 0 ) ) ;
311
-
312
- // computer bar group center and bar offset
313
- var offsetFromCenter = - barWidth / 2 ;
314
-
315
- for ( var i = 0 ; i < calcTraces . length ; i ++ ) {
316
- var calcTrace = calcTraces [ i ] ;
317
- var t = calcTrace [ 0 ] . t ;
318
-
319
- // store bar width and offset for this trace
320
- t . barwidth = barWidth ;
321
- t . poffset = offsetFromCenter ;
322
- t . bargroupwidth = barGroupWidth ;
323
- t . bardelta = minDiff ;
324
- }
325
-
326
- // stack bars that only differ by rounding
327
- sieve . binWidth = calcTraces [ 0 ] [ 0 ] . t . barwidth / 100 ;
328
-
329
- // if defined, apply trace offset and width
330
- applyAttributes ( sieve ) ;
331
-
332
- // store the bar center in each calcdata item
333
- setBarCenterAndWidth ( pa , sieve ) ;
334
-
335
- // update position axes
336
- updatePositionAxis ( pa , sieve ) ;
337
- }
338
-
339
- function setOffsetAndWidthInGroupMode ( gd , pa , sieve , opts ) {
303
+ function setOffsetAndWidth ( gd , pa , sieve , opts ) {
340
304
var fullLayout = gd . _fullLayout ;
341
305
var positions = sieve . positions ;
342
306
var distinctPositions = sieve . distinctPositions ;
@@ -615,6 +579,7 @@ function stackBars(sa, sieve, opts) {
615
579
616
580
isFunnel = ( fullTrace . type === 'funnel' ) ;
617
581
582
+ var offset = calcTrace [ 0 ] . t . poffset ;
618
583
var pts = [ ] ;
619
584
620
585
for ( j = 0 ; j < calcTrace . length ; j ++ ) {
@@ -629,8 +594,7 @@ function stackBars(sa, sieve, opts) {
629
594
value = bar . s + bar . b ;
630
595
}
631
596
632
- var base = sieve . put ( bar . p , value ) ;
633
-
597
+ var base = sieve . put ( bar . p + offset , value ) ;
634
598
var top = base + value ;
635
599
636
600
// store the bar base and top in each calcdata item
0 commit comments