From 8d18c16c57a1399d7bb783d35fd318c0105956f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 26 Nov 2019 12:24:33 -0500 Subject: [PATCH 1/2] improve notched attr description --- src/traces/box/attributes.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/traces/box/attributes.js b/src/traces/box/attributes.js index a8144de00d0..8b31df30dc9 100644 --- a/src/traces/box/attributes.js +++ b/src/traces/box/attributes.js @@ -100,7 +100,12 @@ module.exports = { role: 'style', editType: 'calc', description: [ - 'Determines whether or not notches should be drawn.' + 'Determines whether or not notches are drawn.', + 'Notches displays a confidence interval around the median.', + 'We compute the confidence interval as median +/- 1.57 / IQR * sqrt(N),', + 'where IQR is the interquartile range and N is the sample size.', + 'If two boxes\' notches do not overlap there is 95% confidence their medians differ.', + 'See https://sites.google.com/site/davidsstatistics/home/notched-box-plots for more info.' ].join(' ') }, notchwidth: { From e663c4b02e74c6d8a24707baf925c5bc6eef5e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 26 Nov 2019 12:25:42 -0500 Subject: [PATCH 2/2] fix notched box value-axis autorange push ... so that they include inverted ends which may go beyond the box fences. --- src/traces/box/calc.js | 12 +++++- .../baselines/box_notched-inverted-end.png | Bin 0 -> 24286 bytes .../image/mocks/box_notched-inverted-end.json | 36 ++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 test/image/baselines/box_notched-inverted-end.png create mode 100644 test/image/mocks/box_notched-inverted-end.json diff --git a/src/traces/box/calc.js b/src/traces/box/calc.js index 092d5795fdd..992c2dc64d7 100644 --- a/src/traces/box/calc.js +++ b/src/traces/box/calc.js @@ -69,6 +69,9 @@ module.exports = function calc(gd, trace) { Lib.identity : function(pt) { return (pt.v < cdi.lf || pt.v > cdi.uf); }; + var minLowerNotch = Infinity; + var maxUpperNotch = -Infinity; + // build calcdata trace items, one item per distinct position for(i = 0; i < pLen; i++) { if(ptsPerBin[i].length > 0) { @@ -123,6 +126,8 @@ module.exports = function calc(gd, trace) { var mci = 1.57 * iqr / Math.sqrt(bvLen); cdi.ln = cdi.med - mci; cdi.un = cdi.med + mci; + minLowerNotch = Math.min(minLowerNotch, cdi.ln); + maxUpperNotch = Math.max(maxUpperNotch, cdi.un); cdi.pts2 = pts.filter(ptFilterFn); @@ -131,8 +136,11 @@ module.exports = function calc(gd, trace) { } calcSelection(cd, trace); - var extremes = Axes.findExtremes(valAxis, val, {padded: true}); - trace._extremes[valAxis._id] = extremes; + + trace._extremes[valAxis._id] = Axes.findExtremes(valAxis, + trace.notched ? val.concat([minLowerNotch, maxUpperNotch]) : val, + {padded: true} + ); if(cd.length > 0) { cd[0].t = { diff --git a/test/image/baselines/box_notched-inverted-end.png b/test/image/baselines/box_notched-inverted-end.png new file mode 100644 index 0000000000000000000000000000000000000000..2e86923f0ca5d3998f9f78484cb6c00124122e18 GIT binary patch literal 24286 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/box_notched-inverted-end.json b/test/image/mocks/box_notched-inverted-end.json new file mode 100644 index 00000000000..e8297b640c9 --- /dev/null +++ b/test/image/mocks/box_notched-inverted-end.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "x": [113.35, 29.54, 21.7, 113.35, 29.54, 21.7], + "name": "[113.35,29.54,21.7,113.35,29.54,21.7]", + "type": "box", + "notched": true + }, + { + "x": [39.4, 88.63, 39.4, 88.63], + "name": "[39.4,88.63,39.4,88.63]", + "type": "box", + "notched": true + } + ], + "layout": { + "title": { + "text": "Samples where the confidence interval
median ± 1.57 / IQR * sqrt(N)
go beyond the fences", + "x": 0.02 + }, + "xaxis": { + "showline": true, + "mirror": true, + "zeroline": false + }, + "yaxis": { + "showline": true, + "mirror": true, + "zeroline": false + }, + "showlegend": false, + "margin": {"l": 220, "b": 20, "r": 20}, + "width": 600, + "height": 300 + } +}