Skip to content

Commit 8f60e83

Browse files
authored
Merge pull request #3842 from plotly/one-sided-violins-fixes
One-sided violins with set width fixes
2 parents 19299af + 82cbe93 commit 8f60e83

File tree

7 files changed

+701
-15
lines changed

7 files changed

+701
-15
lines changed

src/traces/box/cross_trace_calc.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,16 @@ function setPositionOffset(traceType, gd, boxList, posAxis) {
133133
var edge = bPos + bdPos;
134134
var edgeplus;
135135
var edgeminus;
136+
// value-space padding
137+
var vpadplus;
138+
var vpadminus;
139+
// pixel-space padding
140+
var ppadplus;
141+
var ppadminus;
142+
// do we add 5% of both sides (more logic for points beyond box/violin below)
143+
var padded = Boolean(width);
144+
// does this trace show points?
145+
var hasPts = (trace.boxpoints || trace.points) && (shownPts > 0);
136146

137147
if(side === 'positive') {
138148
pushplus = dPos * (width ? 1 : 0.5);
@@ -147,17 +157,6 @@ function setPositionOffset(traceType, gd, boxList, posAxis) {
147157
edgeplus = edgeminus = edge;
148158
}
149159

150-
// value-space padding
151-
var vpadplus;
152-
var vpadminus;
153-
// pixel-space padding
154-
var ppadplus;
155-
var ppadminus;
156-
// do we add 5% of both sides (for points beyond box/violin)
157-
var padded = false;
158-
// does this trace show points?
159-
var hasPts = (trace.boxpoints || trace.points) && (shownPts > 0);
160-
161160
if(hasPts) {
162161
var pointpos = trace.pointpos;
163162
var jitter = trace.jitter;

src/traces/box/hover.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) {
5858
hoverPseudoDistance, spikePseudoDistance;
5959

6060
var boxDelta = t.bdPos;
61+
var boxDeltaPos, boxDeltaNeg;
6162
var posAcceptance = t.wHover;
6263
var shiftPos = function(di) { return di.pos + t.bPos - pVal; };
6364

@@ -67,18 +68,23 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) {
6768
var pos = shiftPos(di);
6869
return Fx.inbox(pos, pos + posAcceptance, hoverPseudoDistance);
6970
};
71+
boxDeltaPos = boxDelta;
72+
boxDeltaNeg = 0;
7073
}
7174
if(trace.side === 'negative') {
7275
dPos = function(di) {
7376
var pos = shiftPos(di);
7477
return Fx.inbox(pos - posAcceptance, pos, hoverPseudoDistance);
7578
};
79+
boxDeltaPos = 0;
80+
boxDeltaNeg = boxDelta;
7681
}
7782
} else {
7883
dPos = function(di) {
7984
var pos = shiftPos(di);
8085
return Fx.inbox(pos - posAcceptance, pos + posAcceptance, hoverPseudoDistance);
8186
};
87+
boxDeltaPos = boxDeltaNeg = boxDelta;
8288
}
8389

8490
var dVal;
@@ -134,8 +140,8 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) {
134140
else if(Color.opacity(mc) && trace.boxpoints) pointData.color = mc;
135141
else pointData.color = trace.fillcolor;
136142

137-
pointData[pLetter + '0'] = pAxis.c2p(di.pos + t.bPos - boxDelta, true);
138-
pointData[pLetter + '1'] = pAxis.c2p(di.pos + t.bPos + boxDelta, true);
143+
pointData[pLetter + '0'] = pAxis.c2p(di.pos + t.bPos - boxDeltaNeg, true);
144+
pointData[pLetter + '1'] = pAxis.c2p(di.pos + t.bPos + boxDeltaPos, true);
139145

140146
pointData[pLetter + 'LabelVal'] = di.pos;
141147

-354 Bytes
Loading
40.2 KB
Loading

0 commit comments

Comments
 (0)