@@ -59,6 +59,9 @@ function crossTraceCalc(gd, plotinfo) {
59
59
}
60
60
61
61
var opts = {
62
+ xCat : xa . type === 'category' || xa . type === 'multicategory' ,
63
+ yCat : ya . type === 'category' || ya . type === 'multicategory' ,
64
+
62
65
mode : fullLayout . barmode ,
63
66
norm : fullLayout . barnorm ,
64
67
gap : fullLayout . bargap ,
@@ -172,14 +175,20 @@ function initBase(sa, calcTraces) {
172
175
}
173
176
174
177
function setGroupPositionsInOverlayMode ( pa , sa , calcTraces , opts ) {
178
+ var sieve ;
179
+ var sieveOpts = {
180
+ sepNegVal : false ,
181
+ overlapNoMerge : ! opts . norm
182
+ } ;
183
+
184
+ var categoryOverlay = opts . xCat || opts . yCat ;
185
+ if ( categoryOverlay ) {
186
+ sieve = new Sieve ( calcTraces , sieveOpts ) ;
187
+ }
188
+
175
189
// update position axis and set bar offsets and widths
176
190
for ( var i = 0 ; i < calcTraces . length ; i ++ ) {
177
- var calcTrace = calcTraces [ i ] ;
178
-
179
- var sieve = new Sieve ( [ calcTrace ] , {
180
- sepNegVal : false ,
181
- overlapNoMerge : ! opts . norm
182
- } ) ;
191
+ if ( ! categoryOverlay ) sieve = new Sieve ( [ calcTraces [ i ] ] , sieveOpts ) ;
183
192
184
193
// set bar offsets and widths, and update position axis
185
194
setOffsetAndWidth ( pa , sieve , opts ) ;
0 commit comments