@@ -92,7 +92,11 @@ function setGroupPositionsInOverlayMode(gd, pa, sa, traces) {
92
92
// along with the tops of each bar,
93
93
// and store these bar tops in calcdata
94
94
var sLetter = getAxisLetter ( sa ) ,
95
- fs = function ( v ) { v [ sLetter ] = v . s ; return v . s ; } ;
95
+ fs = function ( v ) {
96
+ var barTop = v . b + v . s ;
97
+ v [ sLetter ] = barTop ;
98
+ return barTop ;
99
+ } ;
96
100
97
101
Axes . expand ( sa , trace . map ( fs ) , { tozero : true , padded : true } ) ;
98
102
}
@@ -122,7 +126,11 @@ function setGroupPositionsInGroupMode(gd, pa, sa, traces) {
122
126
// along with the tops of each bar,
123
127
// and store these bar tops in calcdata
124
128
var sLetter = getAxisLetter ( sa ) ,
125
- fs = function ( v ) { v [ sLetter ] = v . s ; return v . s ; } ;
129
+ fs = function ( v ) {
130
+ var barTop = v . b + v . s ;
131
+ v [ sLetter ] = barTop ;
132
+ return barTop ;
133
+ } ;
126
134
127
135
for ( var i = 0 ; i < traces . length ; i ++ ) {
128
136
Axes . expand ( sa , traces [ i ] . map ( fs ) , { tozero : true , padded : true } ) ;
@@ -268,7 +276,7 @@ function stackBars(gd, sa, sieve) {
268
276
if ( ! isNumeric ( bar . s ) ) continue ;
269
277
270
278
// stack current bar and get previous sum
271
- var previousSum = sieve . put ( bar . p , bar . s ) ;
279
+ var previousSum = sieve . put ( bar . p , bar . b + bar . s ) ;
272
280
273
281
// store the bar base and top in each calcdata item
274
282
bar . b = previousSum ;
@@ -302,7 +310,7 @@ function sieveBars(gd, sa, sieve) {
302
310
for ( var j = 0 ; j < trace . length ; j ++ ) {
303
311
var bar = trace [ j ] ;
304
312
305
- if ( isNumeric ( bar . s ) ) sieve . put ( bar . p , bar . s ) ;
313
+ if ( isNumeric ( bar . s ) ) sieve . put ( bar . p , bar . b + bar . s ) ;
306
314
}
307
315
}
308
316
}
@@ -330,7 +338,7 @@ function normalizeBars(gd, sa, sieve) {
330
338
331
339
if ( ! isNumeric ( bar . s ) ) continue ;
332
340
333
- var scale = Math . abs ( sTop / sieve . get ( bar . p , bar . s ) ) ;
341
+ var scale = Math . abs ( sTop / sieve . get ( bar . p , bar . b + bar . s ) ) ;
334
342
bar . b *= scale ;
335
343
bar . s *= scale ;
336
344
var barEnd = bar . b + bar . s ;
0 commit comments