Skip to content

Commit beaa715

Browse files
authored
Merge pull request #2530 from plotly/box-single-jitter
fix #2529 - box plot with one jittered outlier
2 parents acc7d81 + b3b3a91 commit beaa715

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

src/traces/box/plot.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ function plotPoints(sel, axes, trace, t) {
222222
maxJitterFactor = Math.max(jitterFactor, maxJitterFactor);
223223
}
224224
}
225-
newJitter = trace.jitter * 2 / maxJitterFactor;
225+
newJitter = trace.jitter * 2 / (maxJitterFactor || 1);
226226
}
227227

228228
// fills in 'x' and 'y' in calcdata 'pts' item

test/jasmine/tests/box_test.js

+33-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var Box = require('@src/traces/box');
55

66
var createGraphDiv = require('../assets/create_graph_div');
77
var destroyGraphDiv = require('../assets/destroy_graph_div');
8-
var fail = require('../assets/fail_test');
8+
var failTest = require('../assets/fail_test');
99
var mouseEvent = require('../assets/mouse_event');
1010

1111
var customAssertions = require('../assets/custom_assertions');
@@ -313,7 +313,38 @@ describe('Test box hover:', function() {
313313
name: ''
314314
}].forEach(function(specs) {
315315
it('should generate correct hover labels ' + specs.desc, function(done) {
316-
run(specs).catch(fail).then(done);
316+
run(specs).catch(failTest).then(done);
317317
});
318318
});
319319
});
320+
321+
describe('Box edge cases', function() {
322+
var gd;
323+
324+
beforeEach(function() {
325+
gd = createGraphDiv();
326+
});
327+
328+
afterEach(destroyGraphDiv);
329+
330+
it('does not barf on a single outlier with jitter', function(done) {
331+
var trace = {
332+
boxpoints: 'outliers',
333+
jitter: 0.7,
334+
type: 'box',
335+
y: [46.505, 0.143, 0.649, 0.059, 513, 90, 234]
336+
};
337+
338+
Plotly.newPlot(gd, [trace])
339+
.then(function() {
340+
var outliers = [];
341+
gd.calcdata[0][0].pts.forEach(function(pt) {
342+
if(pt.x !== undefined) outliers.push(pt);
343+
});
344+
expect(outliers.length).toBe(1);
345+
expect(outliers[0].x).toBe(0);
346+
})
347+
.catch(failTest)
348+
.then(done);
349+
});
350+
});

0 commit comments

Comments
 (0)