Skip to content

Commit a3ec75a

Browse files
committed
add prefix box stats hover labels
1 parent b66628e commit a3ec75a

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

src/traces/box/hover.js

+14-6
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,16 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
9292
// box plots: each "point" gets many labels
9393
var usedVals = {};
9494
var attrs = ['med', 'min', 'q1', 'q3', 'max'];
95+
var prefixes = ['median', 'min', 'q1', 'q3', 'max'];
9596

96-
if(trace.boxmean) attrs.push('mean');
97-
if(trace.boxpoints) [].push.apply(attrs, ['lf', 'uf']);
97+
if(trace.boxmean) {
98+
attrs.push('mean');
99+
prefixes.push(trace.boxmean === 'sd' ? 'mean ± σ' : 'mean');
100+
}
101+
if(trace.boxpoints) {
102+
attrs.push('lf', 'uf');
103+
prefixes.push('lower fence', 'upper fence');
104+
}
98105

99106
for(i = 0; i < attrs.length; i++) {
100107
var attr = attrs[i];
@@ -103,12 +110,13 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
103110
usedVals[di[attr]] = true;
104111

105112
// copy out to a new object for each value to label
106-
var val = valAxis.c2p(di[attr], true);
113+
var val = di[attr];
114+
var valPx = valAxis.c2p(val, true);
107115
var pointData2 = Lib.extendFlat({}, pointData);
108116

109-
pointData2[valLetter + '0'] = pointData2[valLetter + '1'] = val;
110-
pointData2[valLetter + 'LabelVal'] = di[attr];
111-
pointData2.attr = attr;
117+
pointData2[valLetter + '0'] = pointData2[valLetter + '1'] = valPx;
118+
pointData2[valLetter + 'LabelVal'] = val;
119+
pointData2[valLetter + 'Label'] = prefixes[i] + ': ' + Axes.hoverLabelText(valAxis, val);
112120

113121
if(attr === 'mean' && ('sd' in di) && trace.boxmean === 'sd') {
114122
pointData2[valLetter + 'err'] = di.sd;

test/jasmine/tests/box_test.js

+14-8
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ describe('Test box hover:', function() {
178178

179179
[{
180180
desc: 'base',
181-
nums: ['0.55', '0', '0.3', '0.6', '0.7'],
181+
nums: ['median: 0.55', 'min: 0', 'q1: 0.3', 'q3: 0.6', 'max: 0.7'],
182182
name: ['radishes', '', '', '', ''],
183183
axis: 'day 1'
184184
}, {
@@ -189,7 +189,7 @@ describe('Test box hover:', function() {
189189
});
190190
return fig;
191191
},
192-
nums: ['0.55', '0', '0.3', '0.6', '0.7', '0.45'],
192+
nums: ['median: 0.55', 'min: 0', 'q1: 0.3', 'q3: 0.6', 'max: 0.7', 'mean: 0.45'],
193193
name: ['radishes', '', '', '', '', ''],
194194
axis: 'day 1'
195195
}, {
@@ -200,14 +200,20 @@ describe('Test box hover:', function() {
200200
});
201201
return fig;
202202
},
203-
nums: ['0.55', '0', '0.3', '0.6', '0.7', '0.45 ± 0.2362908'],
203+
nums: [
204+
'median: 0.55', 'min: 0', 'q1: 0.3', 'q3: 0.6', 'max: 0.7',
205+
'mean ± σ: 0.45 ± 0.2362908'
206+
],
204207
name: ['radishes', '', '', '', '', ''],
205208
axis: 'day 1'
206209
}, {
207210
desc: 'with boxpoints fences',
208211
mock: require('@mocks/boxplots_outliercolordflt.json'),
209212
pos: [350, 200],
210-
nums: ['8.15', '0.75', '6.8', '10.25', '23.25', '5.25', '12'],
213+
nums: [
214+
'median: 8.15', 'min: 0.75', 'q1: 6.8',
215+
'q3: 10.25', 'max: 23.25', 'lower fence: 5.25', 'upper fence: 12'
216+
],
211217
name: ['', '', '', '', '', '', ''],
212218
axis: 'trace 0'
213219
}, {
@@ -217,8 +223,8 @@ describe('Test box hover:', function() {
217223
return fig;
218224
},
219225
nums: [
220-
'0.3', '0.45', '0.6', '1', '0.55', '0.2',
221-
'0.6', '0.7', '0.45', '0.1', '0.6', '0.9'
226+
'q1: 0.3', 'median: 0.45', 'q3: 0.6', 'max: 1', 'median: 0.55', 'min: 0.2',
227+
'q3: 0.6', 'max: 0.7', 'median: 0.45', 'min: 0.1', 'q3: 0.6', 'max: 0.9'
222228
],
223229
name: [
224230
'', 'kale', '', '', 'radishes', '',
@@ -260,7 +266,7 @@ describe('Test box hover:', function() {
260266
fig.layout.hovermode = 'x';
261267
return fig;
262268
},
263-
nums: ['0.55', '0', '0.3', '0.6', '0.7'],
269+
nums: ['median: 0.55', 'min: 0', 'q1: 0.3', 'q3: 0.6', 'max: 0.7'],
264270
name: ['radishes', '', '', '', ''],
265271
axis: 'day 1'
266272
}, {
@@ -274,7 +280,7 @@ describe('Test box hover:', function() {
274280
fig.layout.hovermode = 'x';
275281
return fig;
276282
},
277-
nums: ['0.6', '0.55', '0', '0.3', '0.6', '0.7'],
283+
nums: ['0.6', 'median: 0.55', 'min: 0', 'q1: 0.3', 'q3: 0.6', 'max: 0.7'],
278284
name: ['radishes', 'radishes', '', '', '', ''],
279285
axis: 'day 1'
280286
}, {

0 commit comments

Comments
 (0)