Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUGFIX: Use correct terminology to avoid confusion #6832

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions draftlogs/6832_fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Correctly calls the bars around the boxplot whiskers, not fences.
27 changes: 14 additions & 13 deletions src/traces/box/calc.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,15 @@ module.exports = function calc(gd, trace) {
if(cdi.med !== BADNUM && cdi.q1 !== BADNUM && cdi.q3 !== BADNUM &&
cdi.med >= cdi.q1 && cdi.q3 >= cdi.med
) {
var lf = d2c('lowerfence');
var lf = d2c('lowerwhisker');
cdi.lf = (lf !== BADNUM && lf <= cdi.q1) ?
lf :
computeLowerFence(cdi, boxVals, N);
computeLowerWhisker(cdi, boxVals, N);

var uf = d2c('upperfence');
var uf = d2c('upperwhisker');
cdi.uf = (uf !== BADNUM && uf >= cdi.q3) ?
uf :
computeUpperFence(cdi, boxVals, N);
computeUpperWhisker(cdi, boxVals, N);

var mean = d2c('mean');
cdi.mean = (mean !== BADNUM) ?
Expand Down Expand Up @@ -245,9 +245,9 @@ module.exports = function calc(gd, trace) {
cdi.q3 = Lib.interp(boxVals, 0.75);
}

// lower and upper fences
cdi.lf = computeLowerFence(cdi, boxVals, N);
cdi.uf = computeUpperFence(cdi, boxVals, N);
// lower and upper whiskers
cdi.lf = computeLowerWhisker(cdi, boxVals, N);
cdi.uf = computeUpperWhisker(cdi, boxVals, N);

// lower and upper outliers bounds
cdi.lo = computeLowerOutlierBound(cdi);
Expand Down Expand Up @@ -289,8 +289,8 @@ module.exports = function calc(gd, trace) {
mean: (trace.boxmean === 'sd') || (trace.sizemode === 'sd') ?
_(gd, 'mean ± σ:').replace('σ', trace.sdmultiple === 1 ? 'σ' : (trace.sdmultiple + 'σ')) : // displaying mean +- Nσ whilst supporting translations
_(gd, 'mean:'),
lf: _(gd, 'lower fence:'),
uf: _(gd, 'upper fence:')
lf: _(gd, 'lower whisker:'),
uf: _(gd, 'upper whisker:')
}
};

Expand Down Expand Up @@ -403,8 +403,9 @@ function sortByVal(a, b) { return a.v - b.v; }

function extractVal(o) { return o.v; }

// last point below 1.5 * IQR
function computeLowerFence(cdi, boxVals, N) {
// Whisker: smallest point within 1.5 * IQR range around median
// Fence := q ± 1.5IQR
function computeLowerWhisker(cdi, boxVals, N) {
if(N === 0) return cdi.q1;
return Math.min(
cdi.q1,
Expand All @@ -415,8 +416,8 @@ function computeLowerFence(cdi, boxVals, N) {
);
}

// last point above 1.5 * IQR
function computeUpperFence(cdi, boxVals, N) {
// Whisker: largest point within 1.5 * IQR range around median
function computeUpperWhisker(cdi, boxVals, N) {
if(N === 0) return cdi.q3;
return Math.max(
cdi.q3,
Expand Down