Skip to content

Commit 2aec059

Browse files
committed
mv box/violin pt filter to calc step
.. so that crossTraceCalc can use it.
1 parent d88ee97 commit 2aec059

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

src/traces/box/calc.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,21 @@ module.exports = function calc(gd, trace) {
6464
}
6565
}
6666

67+
var cdi;
68+
var ptFilterFn = (trace.boxpoints || trace.points) === 'all' ?
69+
Lib.identity :
70+
function(pt) { return (pt.v < cdi.lf || pt.v > cdi.uf); };
71+
6772
// build calcdata trace items, one item per distinct position
6873
for(i = 0; i < pLen; i++) {
6974
if(ptsPerBin[i].length > 0) {
7075
var pts = ptsPerBin[i].sort(sortByVal);
7176
var boxVals = pts.map(extractVal);
7277
var bvLen = boxVals.length;
7378

74-
var cdi = {
75-
pos: posDistinct[i],
76-
pts: pts
77-
};
79+
cdi = {};
80+
cdi.pos = posDistinct[i];
81+
cdi.pts = pts;
7882

7983
cdi.min = boxVals[0];
8084
cdi.max = boxVals[bvLen - 1];
@@ -110,13 +114,14 @@ module.exports = function calc(gd, trace) {
110114
cdi.lo = 4 * cdi.q1 - 3 * cdi.q3;
111115
cdi.uo = 4 * cdi.q3 - 3 * cdi.q1;
112116

113-
114117
// lower and upper notches ~95% Confidence Intervals for median
115118
var iqr = cdi.q3 - cdi.q1;
116119
var mci = 1.57 * iqr / Math.sqrt(bvLen);
117120
cdi.ln = cdi.med - mci;
118121
cdi.un = cdi.med + mci;
119122

123+
cdi.pts2 = pts.filter(ptFilterFn);
124+
120125
cd.push(cdi);
121126
}
122127
}

src/traces/box/plot.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,7 @@ function plotPoints(sel, axes, trace, t) {
175175
var paths = gPoints.selectAll('path')
176176
.data(function(d) {
177177
var i;
178-
179-
var pts = mode === 'all' ?
180-
d.pts :
181-
d.pts.filter(function(pt) { return (pt.v < d.lf || pt.v > d.uf); });
178+
var pts = d.pts2;
182179

183180
// normally use IQR, but if this is 0 or too small, use max-min
184181
var typicalSpread = Math.max((d.max - d.min) / 10, d.q3 - d.q1);

0 commit comments

Comments
 (0)