Skip to content

Commit 59831f6

Browse files
committed
fix violin spikelines
1 parent e2f6d0c commit 59831f6

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

src/traces/box/hover.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,9 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) {
159159
attrs.reverse();
160160
}
161161

162+
var spikeDistance = pointData.spikeDistance;
163+
var spikePosition = pointData[spikePosAttr];
164+
162165
var closeBoxData = [];
163166
for(var i = 0; i < attrs.length; i++) {
164167
var attr = attrs[i];
@@ -183,23 +186,27 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) {
183186
pointData2[vLetter + 'err'] = di.sd;
184187
}
185188

186-
// only keep name and spikes on the first item (median)
187-
if(attr === 'med') {
188-
pointData.name = '';
189-
pointData.spikeDistance = undefined;
190-
pointData[spikePosAttr] = undefined;
191-
} else {
192-
pointData2.name = '';
193-
pointData2.spikeDistance = undefined;
194-
pointData2[spikePosAttr] = undefined;
195-
}
196-
197189
// no hovertemplate support yet
198190
pointData2.hovertemplate = false;
199191

200192
closeBoxData.push(pointData2);
201193
}
202194

195+
// only keep name and spikes on the first item (median)
196+
pointData.name = '';
197+
pointData.spikeDistance = undefined;
198+
pointData[spikePosAttr] = undefined;
199+
for(var k = 0; k < closeBoxData.length; k++) {
200+
if(closeBoxData[k].attr !== 'med') {
201+
closeBoxData[k].name = '';
202+
closeBoxData[k].spikeDistance = undefined;
203+
closeBoxData[k][spikePosAttr] = undefined;
204+
} else {
205+
closeBoxData[k].spikeDistance = spikeDistance;
206+
closeBoxData[k][spikePosAttr] = spikePosition;
207+
}
208+
}
209+
203210
return closeBoxData;
204211
}
205212

src/traces/violin/hover.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,19 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
5656
kdePointData[vLetter + 'Label'] = vLetter + ': ' + Axes.hoverLabelText(vAxis, vVal, trace[vLetter + 'hoverformat']) + ', ' + cd[0].t.labels.kde + ' ' + kdeVal.toFixed(3);
5757

5858
// move the spike to the KDE point
59-
kdePointData.spikeDistance = closeBoxData[0].spikeDistance;
59+
var medId = 0;
60+
for(var k = 0; k < closeBoxData.length; k++) {
61+
if(closeBoxData[k].attr === 'med') {
62+
medId = k;
63+
break;
64+
}
65+
}
66+
67+
kdePointData.spikeDistance = closeBoxData[medId].spikeDistance;
6068
var spikePosAttr = pLetter + 'Spike';
61-
kdePointData[spikePosAttr] = closeBoxData[0][spikePosAttr];
62-
closeBoxData[0].spikeDistance = undefined;
63-
closeBoxData[0][spikePosAttr] = undefined;
69+
kdePointData[spikePosAttr] = closeBoxData[medId][spikePosAttr];
70+
closeBoxData[medId].spikeDistance = undefined;
71+
closeBoxData[medId][spikePosAttr] = undefined;
6472

6573
// no hovertemplate support yet
6674
kdePointData.hovertemplate = false;

0 commit comments

Comments
 (0)