@@ -75,7 +75,7 @@ function setGroupPositions(gd, pa, sa, calcTraces, opts) {
7575
7676 switch ( opts . mode ) {
7777 case 'overlay' :
78- setGroupPositionsInOverlayMode ( pa , sa , calcTraces , opts ) ;
78+ setGroupPositionsInOverlayMode ( gd , pa , sa , calcTraces , opts ) ;
7979 break ;
8080
8181 case 'group' :
@@ -94,7 +94,7 @@ function setGroupPositions(gd, pa, sa, calcTraces, opts) {
9494 setGroupPositionsInGroupMode ( gd , pa , sa , included , opts ) ;
9595 }
9696 if ( excluded . length ) {
97- setGroupPositionsInOverlayMode ( pa , sa , excluded , opts ) ;
97+ setGroupPositionsInOverlayMode ( gd , pa , sa , excluded , opts ) ;
9898 }
9999 break ;
100100
@@ -119,7 +119,7 @@ function setGroupPositions(gd, pa, sa, calcTraces, opts) {
119119 setGroupPositionsInStackOrRelativeMode ( gd , pa , sa , included , opts ) ;
120120 }
121121 if ( excluded . length ) {
122- setGroupPositionsInOverlayMode ( pa , sa , excluded , opts ) ;
122+ setGroupPositionsInOverlayMode ( gd , pa , sa , excluded , opts ) ;
123123 }
124124 break ;
125125 }
@@ -217,7 +217,7 @@ function initBase(sa, calcTraces) {
217217 }
218218}
219219
220- function setGroupPositionsInOverlayMode ( pa , sa , calcTraces , opts ) {
220+ function setGroupPositionsInOverlayMode ( gd , pa , sa , calcTraces , opts ) {
221221 // update position axis and set bar offsets and widths
222222 for ( var i = 0 ; i < calcTraces . length ; i ++ ) {
223223 var calcTrace = calcTraces [ i ] ;
@@ -229,7 +229,7 @@ function setGroupPositionsInOverlayMode(pa, sa, calcTraces, opts) {
229229 } ) ;
230230
231231 // set bar offsets and widths, and update position axis
232- setOffsetAndWidth ( pa , sieve , opts ) ;
232+ setOffsetAndWidth ( gd , pa , sieve , opts ) ;
233233
234234 // set bar bases and sizes, and update size axis
235235 //
@@ -253,7 +253,7 @@ function setGroupPositionsInGroupMode(gd, pa, sa, calcTraces, opts) {
253253 } ) ;
254254
255255 // set bar offsets and widths, and update position axis
256- setOffsetAndWidthInGroupMode ( gd , pa , sieve , opts ) ;
256+ setOffsetAndWidth ( gd , pa , sieve , opts ) ;
257257
258258 // relative-stack bars within the same trace that would otherwise
259259 // be hidden
@@ -276,7 +276,7 @@ function setGroupPositionsInStackOrRelativeMode(gd, pa, sa, calcTraces, opts) {
276276 } ) ;
277277
278278 // set bar offsets and widths, and update position axis
279- setOffsetAndWidth ( pa , sieve , opts ) ;
279+ setOffsetAndWidth ( gd , pa , sieve , opts ) ;
280280
281281 // set bar bases and sizes, and update size axis
282282 stackBars ( sa , sieve , opts ) ;
@@ -300,43 +300,7 @@ function setGroupPositionsInStackOrRelativeMode(gd, pa, sa, calcTraces, opts) {
300300 if ( opts . norm ) normalizeBars ( sa , sieve , opts ) ;
301301}
302302
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 ) {
340304 var fullLayout = gd . _fullLayout ;
341305 var positions = sieve . positions ;
342306 var distinctPositions = sieve . distinctPositions ;
@@ -615,6 +579,7 @@ function stackBars(sa, sieve, opts) {
615579
616580 isFunnel = ( fullTrace . type === 'funnel' ) ;
617581
582+ var offset = calcTrace [ 0 ] . t . poffset ;
618583 var pts = [ ] ;
619584
620585 for ( j = 0 ; j < calcTrace . length ; j ++ ) {
@@ -629,8 +594,7 @@ function stackBars(sa, sieve, opts) {
629594 value = bar . s + bar . b ;
630595 }
631596
632- var base = sieve . put ( bar . p , value ) ;
633-
597+ var base = sieve . put ( bar . p + offset , value ) ;
634598 var top = base + value ;
635599
636600 // store the bar base and top in each calcdata item
0 commit comments